工厂方法模式

2018-08-09  本文已影响0人  笨笨哒2018

定义

工厂方法模式又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂模式(Polymorphic Factory),在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。
工厂方式法模式(Factory Method),定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。

意图

定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。

参与者

抽象产品角色(Product):定义产品的接口
具体产品角色(ConcreteProduct) :实现接口Product的具体产品类
抽象工厂角色(Creator) :声明工厂方法(FactoryMethod),返回一个产品
真实的工厂(ConcreteCreator):实现FactoryMethod工厂方法,由客户调用,返回一个产品的实例


image.png

定义产品接口

public interface Product {  
 //声明类所需继承的共同接口,也可以是抽象类
 }

产品的实现类A

public class ProductA implements Product {
    public ProductA() {
        System.out.println("ProductA");
    }
}

产品的实现类B

public class ProductB implements Product {
    public ProductB() {
        System.out.println("ProductB");
    }
}

声明工厂接口

public interface Factory {
    //声明产生产品类的方法
    public Product createProduct();
}

产品A的工厂实现类

public class FactoryA implements Factory {
    //实现工厂类的方法生成产品类A
    public Product createProduct()
    {
        return new ProductA();
    }

}

产品B的工厂实现类

public class FactoryB implements Factory {
    //实现工厂类的方法生成产品类A
    public Product createProduct()
    {
        return new ProductB();
    }

}

调用

public class Client {
    public static void main(String[] args) {
        Factory factory;
        factory = new FactoryA();
        factory.createProduct();
        factory = new FactoryB();
        factory.createProduct();
     
    }
}
上一篇 下一篇

猜你喜欢

热点阅读