我需要一辆汽车,那我可以直接从工厂里面提货,而不用去管汽车是怎么做出来的,以及生产汽车的具体实现,我只需要告诉这个工厂要生产什么品牌的汽车就好,具体的汽车生产过程我也不用管。
二、使用场景使用场景:知道部分特性而创建具体对象的场景。
如:根据环境类型(dev,test或master等)直接调用一整套环境配置
优点:
客户端不需要在负责对象的创建,明确了各个类的职责
如果有新的对象增加,只需要增加一个具体产品类和具体的工厂类即可
不会影响已有的代码,后期维护容易,增强系统的扩展性
缺点:
需要额外的编写代码,增加了工作量【额外编写具体工厂类和具体产品类】
与简单工厂的区别:
简单工厂:工厂类包含了具体的逻辑判断,增加类型时需要修改工厂类代码
工厂方法:工厂类只定义生成抽象产品的方法,增加类型时不需要修改原来的工厂类代码,但需要新增工厂类和实现工厂类的具体产品类。
三、模型分析工厂:定义创建抽象产品的方法,由具体工厂去实现,生成具体产品
抽象产品:定义产品的共有属性和方法,由具体产品去继承
具体工厂:实现/继承工厂类,生产具体产品
具体产品:实现/继承抽象产品类
四、UML类图 五、代码分析 工厂
/** * 汽车工厂【工厂】 */ public interface CarFactory { /** * 生产汽车的方法 */ Car produceCar(); }