简单工厂模式详解
来源:互联网 发布:离散数学公开课 知乎 编辑:程序博客网 时间:2024/05/01 05:00
UML图
简单工厂模式的UML图如下:
解决问题
简单工厂模式解决了如何去实例化一个合适的对象。
核心思想
简单工厂模式的核心思想就是有一个专门的类(工厂类)负责创建实例的过程。
把产品看成是一系列类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类负责来生产一个合适的对象来满足用户的需求。
实现原则
如果简单工厂模式中所涉及到的具体产品之间没有共同的逻辑,那么就用接口来扮演抽象产品的角色;
如果有共同的属性和逻辑,就必须把这些共同的东西提取出来,放在一个抽象类中,然后让具体的产品继承抽象类。为了实现更好的复用,共同的东西应该抽象出来。
在实际运用中,抽象产品和具体产品之间往往是多层次的产品结构。如图:
优点
能够根据外界给定的信息决定究竟应该创建哪个具体的类的对象。用户可以在使用时,直接根据工厂类去创建所需实例,而无需了解这些对象是怎么创建的,有利于软件体系的结构化。
缺点
由于工厂类集中了所有实例的创建逻辑,如果工厂类出现问题,所有的客户端都会受到牵连。
由于简单工厂模式是基于同一个抽象类或接口的,当产品种类增加时,有其他的抽象类或接口时,工厂类就必须判断何时创建何种种类的产品,违背了单一职责,导致系统丧失灵活性和可维护性。
更重要的是,简单工厂模式违背了“系统对扩展开发,对修改封闭”的原则,因为当新增加一个产品类时必须修改工厂类,相应的工厂类就需要重新编译。
小结
简单工厂模式分离了产品的创建者和消费者,有利于系统的结构的优化。不过由于所有产品类的实现都在一个工厂类中,导致没有很高的内聚性,同时也违背了“开-闭原则”。
另外,简单工厂模式的方法一般都是静态的,而静态的方法不能被子类继承的,因此,简单工厂模式无法形成基于基类的继承树结构。
在Android开发中,一般都定义一些简单的工具类,这些类可以视为简单工厂模式的一种实现。
其实严格意义上,简单工厂模式不算是一种设计模式,而是一种编程的习惯,把常用的方法集中到一个工具类中实现。
- 简单工厂模式详解
- 工厂模式详解(简单工厂+工厂方法+抽象工厂)
- 工厂模式详解(简单工厂+工厂方法+抽象工厂)
- iOS 简单工厂模式、抽象工厂模式~详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- 史上最简单的工厂模式详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- (三)简单工厂模式详解
- 设计模式之--工厂模式详解(简单工厂、工厂方法、抽象工厂)
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 仿原生安卓文件管理器
- 从找零到人民币面额设计
- 开源中国的 IT 公司开源软件整理计划介绍
- 抗生素是否可以治疗咽炎
- INNODB 重要优化设置【解决慢卡的问题】
- 简单工厂模式详解
- 第6周项目5复数模板类
- windows下apache如何完整卸载
- try和finally中的return
- 设计模式之访问者
- 样式属性
- 第六周项目一 深复制体验3
- 耳膜穿孔案例
- Android知识点记录(1)