对抽象工厂模式还不是吃的很透,这里只写我的个人看法,希望各位能花些时间看下,帮我指正其中的认识误差。
考虑这样一种情况:有一个产品,不再是由单一的一种产品组成,而是有两种或两种以上的产品组成。比如说电脑,有一个主机和一个显示器。比如A类电脑有一个小主机和一个液晶显示器,B类电脑有一个大主机和CRT显示器。如果使用工厂方法模式来实现,就必须由四个工厂类来分别创建着四个产品。这时候,会想到使用一个类来完成主机和显示器的创建,但是主机和显示器是两个抽象的类,是不能直接实例化的,因此,就需要使用抽象工厂模式来解决这一问题。
个人感觉抽象工厂模式与工厂方法模式非常类似,只不过工厂方法模式中产品的抽象父类只有一个,也就是说产品只由单一的产品组成,而抽象工厂模式中的产品是有两种或两种以上的产品组成的。不知道我这样的理解对不对,如果有错误的地方,还希望各位指正。
约定:产品C1由产品A1和产品B1组成,产品C2由产品A2和产品B2组成。
产品A的抽象类及子类:
同样的,产品B的抽象类及子类:
之后便是抽象工厂类了:
产品C1的工厂类:
产品C2的工厂类:
如果仔细的观察的话,可以发现抽象工厂类也是部分符合开闭原则的。
符合开闭原则的情况是:只增加集成产品的种类,也就是说,增加一个与C1,C2同级的产品C3,C4。。。等情况下(此例中的情况是有一种新的电脑,由另一种主机和显示器组成),是符合开闭原则的。这种情况下,只需要增加相应的产品类和工厂类即可,不需要对现有的代码进行修改。
不符合的情况是:增加产品的组成产品种类,即C产品的组成产品不只由A和B组成(此例中为电脑不再只由显示器和主机组成,可能增加了其他部件,如鼠标等)。这种情况,是需要对现有代码进行修改的,需要修改的是工厂类。
分享到:
相关推荐
Java设计模式之抽象工厂模式
java设计模式之抽象工厂模式实例,希望对大家有所帮助。
Java设计模式之抽象工厂模式
Java设计模式之抽象工厂模式.pdf
抽象工厂模式 JAVA设计模式
一个具体工厂创建一个产品族,一个产品族是不同系列产品的组合,产品的创建的逻辑分在在每个具体工厂类...如果没有应对“多系列对象创建”的需求变化,则没有必要使用抽象工厂模式,这时候使用简单的静态工厂完全可以。
主要介绍了Java设计模式之抽象工厂模式,结合实例形式分析了抽象工厂模式的概念、功能、定义与使用方法,需要的朋友可以参考下
Java设计模式,抽象工厂的Demo,具体的思想与实现有很多讲得很好的老师,我是看厉风行老师的视频学的,讲得不错,简单易懂
java,设计模式中的一种,抽象工厂设计模式。
NULL 博文链接:https://f303153041.iteye.com/blog/1679092
Java实现的工厂模式,抽象工厂,工厂方法模式
Java23种设计模式06抽象工厂模式.pdf
java常用设计模式-抽象工厂模式
JAVA设计模式研究之抽象工厂模式,工厂设计模式
设计模式-抽象工厂模式javademo java小程序