23种设计模式之——简单工厂方法模式
来源:互联网 发布:手包 知乎 编辑:程序博客网 时间:2024/06/06 13:11
写在最前面的话:
这是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 {@Overridepublic 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) 每此修改代码,都要重新编译。
总结一下:简单工厂模式分离产品的创建者和消费者,有利于软件系统结构的优化。但由于其不符合开闭原则,当新产品增加到产品类中时,工厂方法就必须增加适当的条件,以便客户能够添加新的实例。下篇,将介绍工厂方法模式。
1 0
- 23种设计模式之——简单工厂方法模式
- 23种设计模式之——工厂方法模式
- 23种设计模式之——工厂方法模式
- 23种设计模式之——工厂方法模式
- java设计模式示例程序之 ——简单工厂、工厂方法、抽象工厂模式
- 设计模式之简单工厂模式+工厂方法模式
- 设计模式之—简单工厂方法(StaticFactory )-Java实现
- Java设计模式之工厂模式——简单工厂
- 设计模式——工厂模式之简单工厂
- 设计模式——简单工厂,工厂方法,抽象工厂
- 设计模式——简单工厂、工厂方法、抽象工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 正规的打码网站
- FlowTagLayout流标签解析与修改
- ContentProvider概述 获取系统ContentProvider 发信箱
- Ajax
- JetBrains
- 23种设计模式之——简单工厂方法模式
- 基于ubuntu12.04 编译Android 7.0源码
- jsp九大内置对象总结
- enjoy the beautiful linux kernel code
- 存储过程在字符串单引号'内拼接单引号'
- 第一篇
- Spring AOP浅谈
- Android业务组件化开发实践(二)
- Service概述 生命周期 IBinder