这里简单理解:简单工厂又叫静态工厂;是将工厂方法的方法体加上static
问题来了,什么是开闭原则?又有哪些设计原则呢?
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类
面向对象设计(Object-Oriented Design,OOD)
(此处先了解下,随着知识的深入在进行学习)
单一职责:
开闭原则:对扩展开放,对修改关闭
依赖倒置:多用多态,面向接口/抽象编程;是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。
里氏替换法则:是对"开-闭"原则的补充。实现"开-闭"原则的关键步骤就是抽象化;,任何基类可以出现的地方,子类一定可以出现
接口隔离:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。
迪米特法则(最少知道原则):为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
注意:FactoryBean和BeanFactory是有区别的;前者是工厂实体类,后者是实体类的工厂
开闭原则:对扩展开放,对修改关闭
此时再去加一个新的动物Monkey就需要修改工厂源代码
1.工厂方法:
首先创建抽象产品
然后创建具体的产品
定义抽象工厂
定义具体工厂:方式一,不推荐,但是写法简单
定义具体工厂:方式二,推荐,但是代码复杂点
调用具体工厂
修改为简单工厂simplefactory,简单工厂又称静态工厂.将工厂里的方法改为static
基于简单工厂开始改写:
第一步:创建抽象类产品/接口
第二步:创建具体产品
第三步:定义抽象工厂
第四步:调用具体工厂
第一步:创建抽象产品/接口
第二步:创建具体产品
第三步:定义抽象工厂(抽象工厂方法还有对工厂进行抽象)
第四步:调用具体工厂
代码演示:
解释:接口可以多继承;类是单继承类,多实现接口
宝马抽象类没有重写完接口的方法,通过子类来完成额外功能得附加,减少了代码的变动