抽象工厂模式
来源:互联网 发布:1920淘宝全屏轮播海报 编辑:程序博客网 时间:2024/05/16 12:42
一开始学习抽象工厂模式,看到抽象那两个字我们觉得就抽象,我一看它就看不下去。其实认真对比下三个抽象工厂,原来他们基本一样,就改动了一小点。我们可以根据实现加减乘除这四个数学运算进行讨论。
在没有学习封装,继承,代码复用这些理论知识时,我们一般不会写出简单工厂模式的代码。而是写出一个类,把所有的判断都写进去,然后根据判断来选择哪个数学运算。
所以说简单工厂:实现了继承,封装,代码复用。它把四个运算分写类,修改哪个方法只修改相应的类。把分支判断单独的放到另一个类中。这样四个运算类都相互独立,唯一有联系的就是那个判断类。这样整个代码的结构清晰,代码量也少了很多。
进一步抽象,继续往下走,分支判断是很麻烦的,而且有好多重复的语句。在写代码应尽量避免这些判断。于是乎工厂方法就出现了。
在工厂方法中:我们把判断给了客户端,这个判断不是大量的判断语句。而是一个简单的变量。客户端什么也不用想,只要你把你的变量拿出来,我就给你正确的结果。那么我们接受这个变量的容器是什么呢,就是类,每个变量都有自己的类,相互独立,互不影响。当然这也是个缺点,如果变量太多的话,那么类也就多了。有了接收这个变量的容器,那么具体的加减乘除的算法在哪里呢?别急,我们也是相同的创建了相同数目的算法类。这样具体的算法只和我们的变量容器类相连。而且一对一,互不影响。如果多了算法,直接添加就是,完全不用修改。所以说:工厂方法是简单工厂的抽象,他把判断放在了客户端,而且这个判断仅仅是一个变量。而且判断的结果也分别封装为一个类。这样的代码结构要比简单工厂好了不少。
跟我走,来看下抽象工厂,仔细观察抽象工厂和工厂方法,发现他们其实是一样的。唯一的不同就是一个是接口,一个是抽象类。看类图:
看定义:工厂方法模式是创建一个具体的类,来提供很多的接口,这个接口的实现到子类的身上实现。也就是说有个接口的实现通过了继承来实现。
抽象工厂模式:提供了一个接口,这个接口为众多类来实现。也就是说工厂方法里的抽象类变为了接口。我本以为就这么点区别呢,通过师父的讲解,原来还有好多区别等着我去理解呢。持续学习中。
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- BS架构ERP系统开发全系列之白金教程-主界面设计
- 努力让自己拥有一个初学者的心态,永远充满好奇、求知欲和赞叹
- 那一年,我们二十七八岁
- 数据库系统概论复习总结3 --- 第二章关系数据库标准语言SQL
- IIS——服务开启及本地发布网站图解(一)
- 抽象工厂模式
- [精]Oracle APEX 5.0 新手教程(一) Form表单
- 最大公约数---- C++
- 使用ReactiveCocoa实现iOS平台响应式编程
- (八)Git 提交更改
- Centos修炼----->Centos7之安装eclipse
- VisualDDK + Windbg 进行Windows内核调试(二)
- springmvc+mybatis 无极限树形结构菜单(第三种)
- (九)Git 推送操作