设计模式学习-简单工厂模式
来源:互联网 发布:ep软件 编辑:程序博客网 时间:2024/06/05 19:28
简单工厂模式
转载>http://blog.csdn.net/lfdfhl/article/details/77977256
核心思想:由同一个工厂根据不同的产品类型生产不同的产品
简单工厂模式4种角色
- 抽象产品:接口或抽象类,负责产品角色的定义,与客户端交互
- 具体产品:被工厂类创建的对象,也即实际操作对象
- 工厂类:生产产品
- 客户端:工厂类的调用者
看个例子
抽象产品
public interface Mobile { void call(String no);}
Mobile接口,定义了一个拨打电话的抽象方法call(String):void,客户端将调用这个方法;
具体产品
public class StMobile implements Mobile { public StMobile() { System.out.println("标配mobile"); } void call(String no) { System.out.println("标配mobile拨打号码:" + no); }}public class ProMobile implements Mobile { public ProMobile() { System.out.println("高配mobile"); } void call(String no) { System.out.println("高配mobile拨号:" + no); }}
定义了2个具体的Mobile产品,工厂类将根据不同的类型产生不同的Mobile对象
工厂类
public class MobileFactory { public static Mobile createMobile(MobileType type) { Mobile mobile = bull; switch(type) { case STANDARD:mobile = new StMobile();break; case PROFESSIONAL:mobile = new ProMobile();break; default: break; } return mobile; } public enum MobileType { STANDARD, PROFESSIONAL }}
客户端
public class TestMobile { public static void main(String[] args) { Mobile stMobile = MobileFactory.createMobile(MobileType.STANDARD); Mobile proMobile = MobileFactory.createMobile(MobileType.PROFESSIONAL); stMobile.call("15098764321"); }}
分析
上面的例子即是一个完整简单工厂模式示例。
通过观察可以发现,简单工厂模式的瓶颈在于工厂类产生具体产品的类型受限,每当有新类型产品加入时就要修改MobileFactory类代码,问题关键在于switch语句type类型不可知,此模式改进就是去掉switch,那就是另一种模式了
阅读全文
0 0
- 设计模式学习-简单工厂
- 设计模式学习之简单工厂模式
- 设计模式学习----简单工厂模式
- 【设计模式】简单工厂模式学习笔记
- 设计模式之简单工厂模式学习
- 设计模式学习-----简单工厂模式
- 设计模式学习笔记--简单工厂模式
- 设计模式学习—简单工厂模式
- 设计模式学习之简单工厂模式
- 设计模式学习之简单工厂模式
- [设计模式学习]简单工厂模式
- 设计模式学习(简单工厂模式)
- 设计模式学习笔记--简单工厂模式
- 设计模式学习笔记-简单工厂模式
- 学习设计模式-简单工厂模式
- 设计模式学习--简单工厂模式
- 【设计模式学习】简单工厂模式
- 设计模式学习之简单工厂模式
- 排列组合
- Python编程:从入门到实践(课后习题8)
- 内部类与外部类之间访问总结
- 测试模型之W模型
- 【错误】关于DateTable中 Cannot reinitialise DataTable问题
- 设计模式学习-简单工厂模式
- 编译
- python Tkinter学习
- SGISTL源码探究-关联式容器:hash_multimap
- elasticsearch 5.1 java开发用例
- xcode8 如何安装插件
- Hibernate批量保存前台传递的EasyUI-datagrid数据
- jquery 解析json
- USB通信协议——错误检查