建造模式-工厂方法模式

简单工厂模式的不足:如果有新的产品加入到系统中,不得不去修改工厂类

工厂方法模式:核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做,这个核心类就变成了抽象工厂模式。

公共产品接口

package com.javapatterns.factorymethod;

public interface Product
{
}

 具体产品1

package com.javapatterns.factorymethod;

public class ConcreteProduct1 implements Product
{
	public ConcreteProduct1()
    {
		System.out.println("CocnreteProduct1 is being created.");
    }
}

 

具体产品2

package com.javapatterns.factorymethod;

public class ConcreteProduct2 implements Product
{
	public ConcreteProduct2()
    {
		System.out.println("CocnreteProduct2 is being created.");
    }
}

 

抽象工厂

package com.javapatterns.factorymethod;

public interface Creator
{
    public Product factory();
}

 

生产具体产品1的具体工厂1

package com.javapatterns.factorymethod;

public class ConcreteCreator1 implements Creator
{
    public Product factory()
    {
        return new ConcreteProduct1();
    }
}

 

生产具体产品2的具体工厂2

package com.javapatterns.factorymethod;

public class ConcreteCreator2 implements Creator
{
    public Product factory()
    {
        return new ConcreteProduct2();
    }
}

 

客户代码

package com.javapatterns.factorymethod;

public class Client
{
    private static Creator creator1, creator2;
    private static Product prod1, prod2;

    public static void main(String[] args)
    {
		creator1 = new ConcreteCreator1();
        prod1 = creator1.factory();

		creator2 = new ConcreteCreator2();
        prod2 = creator2.factory();

    }
}

 

 

我们可以看到,在增加一个产品,我们只要自己再写一个具体产品类继承抽象产品,具体工厂类继承抽象工厂,在客户端就可以调用了,在工厂中我们不用修改现有的代码,是不是很方便。。。但是这样做带来的结果就是增加了大量的类

你可能感兴趣的:(工作)