23种设计模式之——简单工厂方法模式
2016-11-05 14:29
253 查看
写在最前面的话:
这是dazhi,开博的第一篇博客,由于作者水平有限,文章难免有错误,希望各个博友多多指正,共同进步。
好了,该是第一次写博客了,好吧,就从23中设计模式写起吧。首先第一篇要介绍简单工厂模式,在23中设计模式中,这应该是最好写的了,好,废话不对说,下面让我们开始吧。简单工厂方法模式的类图如下:
上图中的Creator拥有一个factory方法,用于创建产品类的对象,简单工厂方法模式的特点是仅仅有一个具体的(Concrete)的创建者,并且在此类中包含一个静态的工厂方法factory()。
简单工厂方法模式的各部分组成部分的意义说明:
(1) Creator:是简单工厂方法的核心,包含程序的业务逻辑,当客户端(Client)需要具体产品(ConcreteProduct)的时候,委托工厂类 (Product)来创建产品。(2) Product:可以是接口或者抽象类,或者公共的超类。
(3) ConcreteProduct:实现或者继承了Product,用于产生具体的产品。
(4) Client:用户执行的一系列操作。
下面给出各个类的具体代码:
Client类,main函数,用于命令调取产品
public class Client { public static void main(String[] args) { // 生产一件产品 Product product = Creator.getObj(); // 获得产品的信息 product.getCreatProductInfo(); } }
Product类,一个产品接口,里面定义了一个抽象的方法,用于获取产品信息
public interface Product { abstract void getCreatProductInfo(); }
ConcreteProduct类,用于生产一件具体的产品
public class ConcreteProduct implements Product { @Override public void getCreatProductInfo() { String concreteProduct = "生产了一件具体的产品A"; System.out.println(concreteProduct); } }
Creator类,委托工厂类创建产品
public class Creator { public static Product getObj() { Product product = new ConcreteProduct(); return product; } }
简单工厂方法的优点:
(1) 客户端不直接创建产品类对象,客户类(Client)只是产品对象的消费者。(2) 简单工厂方法模式实现了责任分离。
(3) 用户可根据工厂类直接去创建所需的实例,不必关心具体的实现细节。
(4) 工厂类包含了创建对象的必要逻辑判断,根据客户端的选择动态实例化相关类,客户端没有具体的条件判断语句。
简单工厂方法的缺点:
(1) 每当增加新的产品时,都要修改工厂类的代码,这并不符合软件设计六大原则之一的开闭原则(OCP)。(2) 由于Creator类的方法是静态的,所有方法不能被继承,也就不能设计为一个层次类。
(3) 每此修改代码,都要重新编译。
总结一下:简单工厂模式分离产品的创建者和消费者,有利于软件系统结构的优化。但由于其不符合开闭原则,当新产品增加到产品类中时,工厂方法就必须增加适当的条件,以便客户能够添加新的实例。下篇,将介绍工厂方法模式。
相关文章推荐
- 【23种设计模式】创建型模式 > 三个工厂模式(简单工厂、抽象工厂、工厂方法)
- 重头开始学23种设计模式:三大工厂(简单工厂,工厂方法,抽象工厂)
- 23种设计模式(2):工厂方法模式
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)
- 设计模式-简单工厂、工厂方法、抽象工厂之小结与区别
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)
- Java 设计模式中,简单工厂、工厂方法、抽象工厂的区别
- 设计模式对比之 简单工厂方法模式vs策略模式
- 精通23种设计模式之简单工厂模式
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 设计模式之Factory1(简单工厂,工厂方法,抽象工厂的比较)
- 设计模式_2_简单工厂、工厂方法、抽象工厂比较
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 追MM与设计模式的JAVA实现-简单工厂方法
- 23种设计模式(2):工厂方法模式
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- JAVA设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 设计模式之Factory(简单工厂和工厂方法)
- 23种设计模式(2):工厂方法模式
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)