设计模式之----简单工厂模式
2017-10-09 23:16
253 查看
简单工厂模式
提供创建对象的功能,不需要关心具体的实现,降低调用端和模块的耦合度(最少知识原则)。接口实现多态的场景的例子
1. 普通实现(将子类的实现指向父接口)
Api api = new ApiImplA();
1.1 存在的问题
如果这个类是设计给别人使用,假如存在多个实现类,那么,我需要告知使用者,各个实现类分别是什么功能等等,他才能够使用。1.2 改进
使用简单工厂模式,使用常量去区分,我需要获取的对象。2. 简单工厂模式实现
public class ApiImplA implements Api{} public class ApiImplB implements Api{} public class ApiImplC implements Api{} public class Factory { //创建方法 public static Api create(int type) { switch (type) { case 1: return new ApiImplB(); case 2: return new ApiImplC(); default: return new ApiImplA(); } } }
使用(可以将几种类型提为常量):
// 简单工厂模式:符合最少知识原则 Api api = Factory.create(1); api = Factory.create(2);
2.1 进一步优化:将各实现类和工厂类放到同一个包内,实现类的修饰符去掉,只对包内公开。
//这种实现方式已经不可用,只能使用简单工厂创建。
Api api = new ApiImplA();
3. 总结:
在安卓中比如BitmapFactory就是这样的典型例子。
在看很多开源库的时候,我们会发现很多实现细节的类是没有修饰符的,调用端无法直接创建实现对象,只能使用工厂的创建方法创建,符合最少知识原则。
相关文章推荐
- 【设计模式】简单工厂
- 设计模式--简单工厂、工厂方法和抽象工厂
- 设计模式之简单工厂
- 设计模式系列 - 简单工厂 推荐
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 简单工厂设计模式(Simple Factory Design Pattern)
- 设计模式之简单工厂模式
- [设计模式]简单工厂模式
- 设计模式 1-简单工厂模式
- C#设计模式 简单工厂模式
- 设计模式之工厂设计模式(一:简单工厂模式与工厂方法模式)
- 设计模式 - 简单工厂
- 设计模式之一 简单工厂模式
- C#设计模式之简单工厂篇(转载)
- C#设计模式之简单工厂篇
- java设计模式之简单工厂模式
- 设计模式C#实现(九)——工厂方法模式和简单工厂
- java设计模式--简单工厂
- C++设计模式从0进击-1-简单(静态)工厂模式