码迷,mamicode.com
首页 > 其他好文 > 详细

工厂方法模式

时间:2019-02-26 11:51:32      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:增加   ring   img   ima   技术   err   stat   image   单一职责   

1.基本概念

  • 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,将类的实例化延迟到子类工厂
  • 解决的问题:简单工厂违背的开放-封闭原则等
  • UML图
  • 模式组成

  技术图片

2.代码实现

技术图片
package com.chengjie;

interface Product1 {
    void show();
}

interface Factory1 {
    Product1 createProduct();
}

class ProductA1 implements Product1 {
    @Override
    public void show() {
        System.out.println("ProductA1.show() is called!");
    }
}

class ProductB1 implements Product1 {
    @Override
    public void show() {
        System.out.println("ProductB1.show() is called!");
    }
}

class FactoryA implements Factory1 {
    @Override
    public Product1 createProduct() {
        return new ProductA1();
    }
}

class FactoryB implements Factory1 {
    @Override
    public Product1 createProduct() {
        return new ProductB1();
    }
}

public class TestFactoryMethod {
    public static void main(String[] args) {
        FactoryA fa = new FactoryA();
        fa.createProduct().show();

        FactoryB fb = new FactoryB();
        fb.createProduct().show();
    }
}
View Code

3.优点

  • 开放-封闭原则:简单工厂中违背的开放-封闭原则
  • 单一职责原则:一个工厂方法只负责一个产品的创建
  • 不使用静态方法模式,可形成继承结构

4.缺点

  • 增加了工厂类与多个接口

5.应用场景

  • 类不需要知道对象的类时,工厂方法只需要知道工厂即可

6.参考链接

  https://www.jianshu.com/p/d0c444275827

工厂方法模式

标签:增加   ring   img   ima   技术   err   stat   image   单一职责   

原文地址:https://www.cnblogs.com/forTheDream1991/p/10436235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!