工厂模式
2018-05-21 18:32:04 24 举报
工厂模式
作者其他创作
大纲/内容
ProductAFactory
Object getObject()
ConcreteFactory2
createProductA()createPuoductB()
Factory
Object getFactory(String type)
IFactory
Object getObject();
抽象工厂方法,抽象工厂方法是对工厂方法的进一步抽象,是负责一个产品族,而一个工厂方法只是负责某一个指定的产品抽象工厂通常配合工厂方法使用来创建。
ConcreteFactory1
FactoryImpl1
优点:用户不需要关心如何去查找和创建具体类的实现。
缺点:1.代码编写结构冗余,写法判断复杂,工厂方法需要进行的判断太多。 2.不利于扩展修改,不符合开闭原则。每次修改都需要修改原有的方法,容易 出现修改错误的情况 3.这种写法不易于阅读,冗余的判断在一定程度上会带来阅读的不便。 4.这种写法对于用户来说,需要事先知道工厂具体可以创建哪些对象,带来一 定程度上的学习代价。 5.用户创建时,传入参数没有,有可能会产生一个异常或Null的对象。
FactoryImpln
...
优点:更进一步解耦,用户使用过程中只关心工厂提供的选择,不需要额外关注具体实现和具体使用哪个工厂实现。
缺点:1.每个对象都会有一个或多个工厂实现,工厂实现类会很多。 2.过多的工厂实现类也会给用户带来一定程度上的学习代价。用户需要自己去创建工 厂对象。
AbsFactory
ProductBFactory
简单工厂模式,通过工厂类提供的方法,传入参数,工厂方法根据参数判断要创建什么样的对象返回
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。创建一个工厂接口,具体实现是由其实现类实现。
工厂模式
缺点:扩展复杂,每增加一个产品族,那么所有的产品线必须全部实现。每增加一个具体产品线,所有具体实现都要进行修改。
抽象工厂模式:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类
优点:1.不同对象创建由工厂的实现类实现,实现解耦。 2.符合开闭原则,对修改封闭,对扩展开放,需要新增工厂,只需新增一个具体的工 厂实现。 3.用户不需要关注对象具体实现,通过创建工厂实现来获得对象 4.用户只能根据现有的工厂实现去获得对象。不会存在或得不到对象的情况
0 条评论
下一页