java web简单工厂模式_Java设计模式——简单工厂(Simple Factory)

什么是简单工厂【又叫静态工厂】

由一个工厂类来创建具有相同父类的类。【漫威的英雄有一个共同点,那就是他们都有很强的作战能力(分为智力,力量,和格斗技巧等)】

结构类图

2a169d31b7a9db63e65af51aced6e6cd.png

简单工厂【Simple Factory】

iHeroFactory: 专门用来调度英雄,传入名字召唤漫威英雄。

iHero : 定义英雄(产品)规范(都有超强的能力skill),可以使用接口或抽象类。

public interface iHero {//用来定义英雄规范

void skill();

}

1

2

3

class SpiderMan implements iHero {

@Override

public void skill() {

System.out.println("【蜘蛛侠】【智力:7】【力量:5】【格斗技巧:7】");

}

}

class Thor implements iHero {

@Override

public void skill() {

System.out.println("【雷神】【智力:7】【力量:7】【格斗技巧:7】");

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

public static iHero callTheHero(String hero) {//根据不同序号来创建相同父类的子类

switch (hero) {

case "雷神":

return new Thor();

case "蜘蛛侠":

return new SpiderMan();

}

throw new RuntimeException("暂无此英雄");

}

1

2

3

4

5

6

7

8

9

10

召唤英雄

通过上面的iHeroFactory我们可以很容易的创建相对应的英雄对象。

iHero leiShen = iHeroFactory.callTheHero("雷神");

leiShen.skill();

System.out.println("\n------------------------------------\n");

iHero zhizhu = iHeroFactory.callTheHero("蜘蛛侠");

zhizhu.skill();

1

2

3

4

5

6

7

d8b35a4060e04b3d7c1f837a2a6d291c.png

小结

简单工厂优点

工厂类有必要的逻辑判断,可以决定具体创建类,使用者免除直接创建对象的责任。

简单工厂缺点

使用多重判断,比较难维护。

每增加一个英雄,都要在工厂类中增加相应的创建业务的逻辑方法,违背开闭原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值