【设计模式】工厂模式 Factory Pattern
2015-07-27 17:46
309 查看
1)简单工厂(不是模式)
简单工厂只是一种变成习惯,并非23种设计模式之一。
简单工厂提供将实例话那种类型留给运行时判断,而非编译时指定。简单工厂模式就是由一个工厂类根据传入的参数决定创建出哪一个类的实例。
可以将客户程序从具体类解耦。
角色:
工厂类:接收参数,返回参数指定的类的实例。
抽象产品:返回实例的类型,具体产品的基类。
具体产品:继承自抽象产品的类。
2)工厂方法模式
沿着上面的思路,创建的接口是稳定的,但是创建对象剧烈变化。将稳定的接口抽象成基类,让子类确定实例哪个产品,将实际创建工作推迟到子类中。
工厂方法用来处理对象的创建,并将这样的创建封装在子类中。这样客户程序中关于基类的代码就和子类对象创建解耦了。
工厂方法模式定义了一个创建对象的接口,但由子类去决定要实例化的是哪一个。工厂方法让类把实例化推辞到子类。
依赖倒置原则(Dependency Inversion Principle):设计时依赖抽象,减少对具体类的依赖。
角色:
抽象工厂类:声明生成一系列抽象产品的方法
具体工厂类:生成具体的产品
抽象产品:抽象产品
具体产品:具体产品类
3)抽象工厂类
再进一步演化,提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
简单工厂只是一种变成习惯,并非23种设计模式之一。
简单工厂提供将实例话那种类型留给运行时判断,而非编译时指定。简单工厂模式就是由一个工厂类根据传入的参数决定创建出哪一个类的实例。
可以将客户程序从具体类解耦。
角色:
工厂类:接收参数,返回参数指定的类的实例。
抽象产品:返回实例的类型,具体产品的基类。
具体产品:继承自抽象产品的类。
2)工厂方法模式
沿着上面的思路,创建的接口是稳定的,但是创建对象剧烈变化。将稳定的接口抽象成基类,让子类确定实例哪个产品,将实际创建工作推迟到子类中。
工厂方法用来处理对象的创建,并将这样的创建封装在子类中。这样客户程序中关于基类的代码就和子类对象创建解耦了。
工厂方法模式定义了一个创建对象的接口,但由子类去决定要实例化的是哪一个。工厂方法让类把实例化推辞到子类。
依赖倒置原则(Dependency Inversion Principle):设计时依赖抽象,减少对具体类的依赖。
角色:
抽象工厂类:声明生成一系列抽象产品的方法
具体工厂类:生成具体的产品
抽象产品:抽象产品
具体产品:具体产品类
3)抽象工厂类
再进一步演化,提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
相关文章推荐
- 阿里云Linux新手入门一
- VMware2014年所有产品简介
- android下载网络图片并缓存
- 关于STL中的map和hash_map
- OC学习 #pragma mark指令的使用 这个没有什么可说的直接用就可以了,知道这个是什么即可
- CAS4.0 SERVER登录后用户信息的返回
- 解决Linux系统在设置alias命令重启后失效的问题
- HDOJ1016(标准dfs)
- android 监测数据库变化 ContentObserver
- MCS速率计算公式
- 一个优秀的程序员
- 拆分单链表(a1,b1,a2,b2....an,bn)=(a1,...an)+(bn,...b1)
- 一位ACM过来人的心得
- AngularJS的一些基本样式初窥
- #面向对象的三大基本特征
- 英语总结——木桶原理
- Flood Fill Image
- MyEclipse 8.6 更新安装 maven插件
- JVM 进阶 三 基本垃圾回收算法
- 防止apk被捆绑加入的判断