工厂及抽象工厂
?????? 学java有一段时间了,感觉在java的语法应用上,并没有太多深究的意义。出现了两条岔路:一、学习JDK,了解java如何封装数据结构,编码技巧上。二、学习java扩展层面上的东西,设计技巧上。因为平时做些web开发,因此从实际出发,觉得还是先学习一下第二种选择吧!
???? 设计模式:
????? 一、工厂、抽象工厂
????? 渐渐发现好的设计会带来很大的可维护性,因此学习了下工厂及抽象工厂。
????? 二者共同之处,让使用者无需关心逻辑实现,只需要关心工厂能提供哪些功能。
????? 简单工厂:
?????
??? 
???? 可以看到基本上是a1、a2到an是互斥的关系,可以水平扩展。
????
???? 抽象工厂:
???? 
???? 抽象工厂再次封装了普通工厂,与普通工厂不同的是,这里的A、B、C都是抽象的,且A、B、C组合成了Alphabet,它们的关系不是互斥的。但最底层的实现依然保持互斥。
???? 由此得出,普通工厂就是面向对象继承,利于复用。而抽象工厂就是相当于把抽象方法封装成了抽象类。
???? 把一些初始化的工作放到了实现抽象类里。