大数据数据库优化程序员

Java设计模式(二) 工厂方法模式

2016-06-12  本文已影响263人  郭俊Jason

原创文章,转载请务必将下面这段话置于文章开头处。
  本文转发自Jason's Blog原文链接 
http://www.jasongj.com/design_pattern/factory_method/

工厂方法模式解决的问题

上文《简单工厂模式不简单》中提到,简单工厂模式有如下缺点,而工厂方法模式可以解决这些问题

工厂方法模式

工厂方法模式介绍

工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫多态工厂模式或者虚拟构造器模式。在工厂方法模式中,工厂父类定义创建产品对象的公共接口,具体的工厂子类负责创建具体的产品对象。每一个工厂子类负责创建一种具体产品。

工厂方法模式类图

工厂模式类图如下 (点击可查看大图)


Factory Method Pattern Class DiagramFactory Method Pattern Class Diagram

工厂方法模式角色划分

工厂方法模式使用方式

如简单工厂模式直接使用静态工厂方法创建产品对象不同,在工厂方法,客户端通过实例化具体的工厂类,并调用其创建实例接口创建具体产品类的实例。根据依赖倒置原则,具体工厂类的实例由工厂接口引用(客户端依赖于抽象工厂而非具体工厂),具体产品的实例由产品接口引用(客户端和工厂依赖于抽象产品而非具体产品)。具体调用代码如下

package com.jasongj.client;

import com.jasongj.dao.IUserDao;
import com.jasongj.factory.IDaoFactory;
import com.jasongj.factory.MySQLDaoFactory;

public class Client {

  public static void main(String[] args) {
    IDaoFactory factory = new MySQLDaoFactory();
    IUserDao userDao = factory.createUserDao();
    userDao.getUser("admin");

  }

}

工厂方法模式示例代码

本文所述工厂方法模式示例代码可从作者Github下载

工厂方法模式优点

工厂方法模式缺点

简单工厂模式与OOP原则

已遵循的原则

未遵循的原则

Java设计模式系列

上一篇 下一篇

猜你喜欢

热点阅读