00.简述工厂设计模式

Posted huadaxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了00.简述工厂设计模式相关的知识,希望对你有一定的参考价值。

技术图片

技术图片

技术图片

这里简单理解:简单工厂又叫静态工厂;是将工厂方法的方法体加上static

?

技术图片

?

问题来了,什么是开闭原则?又有哪些设计原则呢?

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类

技术图片

面向对象设计(Object-Oriented Design,OOD

(此处先了解下,随着知识的深入在进行学习)

单一职责:

开闭原则:对扩展开放,对修改关闭

依赖倒置:多用多态,面向接口/抽象编程;是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

里氏替换法则:是对"开-闭"原则的补充。实现"开-闭"原则的关键步骤就是抽象化;任何基类可以出现的地方,子类一定可以出现

接口隔离:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

迪米特法则(最少知道原则):为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

?

注意:FactoryBean和BeanFactory是有区别的;前者是工厂实体类,后者是实体类的工厂

技术图片

开闭原则:对扩展开放,对修改关闭

此时再去加一个新的动物Monkey就需要修改工厂源代码

?

技术图片

技术图片在该网站来画类图加深理解;或者用StarUML软件技术图片

技术图片

技术图片

技术图片

1.工厂方法:

技术图片

技术图片

技术图片

首先创建抽象产品

技术图片

然后创建具体的产品

技术图片

技术图片

定义抽象工厂

技术图片

定义具体工厂:方式一,不推荐,但是写法简单

技术图片

技术图片技术图片

定义具体工厂:方式二,推荐,但是代码复杂点

技术图片

技术图片

调用具体工厂

技术图片

技术图片

?

技术图片

?

技术图片

?

技术图片

修改为简单工厂simplefactory,简单工厂又称静态工厂.将工厂里的方法改为static

技术图片

技术图片

技术图片

技术图片

?

技术图片

技术图片

技术图片

基于简单工厂开始改写:

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

?

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

第一步:创建抽象类产品/接口

技术图片

技术图片

技术图片

第二步:创建具体产品

技术图片

技术图片

技术图片

技术图片技术图片

?

第三步:定义抽象工厂

技术图片

技术图片

技术图片

技术图片技术图片

第四步:调用具体工厂

技术图片技术图片

?

技术图片

技术图片

?

第一步:创建抽象产品/接口

第二步:创建具体产品

技术图片

第三步:定义抽象工厂(抽象工厂方法还有对工厂进行抽象)

技术图片

第四步:调用具体工厂

技术图片

?

代码演示:

技术图片

解释:接口可以多继承;类是单继承类,多实现接口

技术图片宝马抽象类没有重写完接口的方法,通过子类来完成额外功能得附加,减少了代码的变动

技术图片

技术图片对高配和低配工厂的抽象;这也是抽象工厂方法的核心

技术图片

技术图片

技术图片

?

?

以上是关于00.简述工厂设计模式的主要内容,如果未能解决你的问题,请参考以下文章

23种设计模式简述

简述23种软件设计模式

设计模式的分类以及部分简述

创建模式之工厂方法模式

实践GoF的设计模式:工厂方法模式

学习笔记之工厂模式-2017年1月11日23:00:53