浅谈设计模式 -- 工厂模式

 工厂模式也是设计模式当中的创建型模式,不直接创建对象,而是把创建对象的工作交给一个“工厂”类来统一完成,这样做很好地封闭了创建逻辑,大大地增加系统的可维护性与扩展性。主要分为简单工厂与抽象工厂。

一、简单工厂模式

  

                         (图片来自百度)

  如上图所示a产品,b产品继承相同的产品接口,再由Creator工厂通过factory‘生产’出来。

package top.flash.factory.simple;

public interface IProduct {

    void function();
}
package top.flash.factory.simple;

public class ProductA implements IProduct {
    @Override
    public void function() {
        System.out.println("我是A产品");
    }
}
package top.flash.factory.simple;

public class ProductB implements IProduct {
    @Override
    public void function() {
        System.out.println("我是B产品");
    }
}
package top.flash.factory.simple;

public class Creator {

    public IProduct factory(String className){
        if(className == null){
            return null;
        }
        if(className.equals("ProductA")){
            return new ProductA();
        }else if(className.equals("ProductB")){
            return new ProductB();
        }
        return null;
    }
}
package top.flash.test.factory;

import top.flash.factory.simple.Creator;
import top.flash.factory.simple.ProductA;
import top.flash.factory.simple.ProductB;

public class FactoryTest {

    public static void main(String[] args) {
        Creator creator = new Creator();
        ProductA productA = (ProductA) creator.factory("ProductA");
        ProductB productB = (ProductB) creator.factory("ProductB");
        productA.function();
        productB.function();
    }
}
我是A产品
我是B产品

 

二、抽象工厂模式

  抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂,如果说简单工厂是一条生产线,那么抽象工厂就是多条生产线,大概的类图:

  

      (图片来自菜鸟教程)

 抽象工厂对简单工厂的一系列拓展,这里就不代码演示了。

posted on 2018-12-04 20:24  妞一个闪电侠  阅读(149)  评论(0编辑  收藏  举报

导航