上面已经介绍了简单工厂,也介绍了简单工厂的缺点,接下来介绍的是工厂方法
package com.djk.design.factory.factorymethod;
public class Client
{
public static void main(String[] args)
{
AbstractFactory factory = new CarFactory();
say(factory);
factory = new BusFactory();
say(factory);
}
public static void say(AbstractFactory factory)
{
if (null == factory)
{
return ;
}
Product product = factory.createProduct();
if (null == product)
{
return ;
}
product.say();
}
}
package com.djk.design.factory.factorymethod;
public interface AbstractFactory
{
Product createProduct();
}
package com.djk.design.factory.factorymethod;
public class CarFactory implements AbstractFactory
{
@Override
public Product createProduct()
{
return new Car();
}
}
package com.djk.design.factory.factorymethod;
public class CarFactory implements AbstractFactory
{
@Override
public Product createProduct()
{
return new Car();
}
}
package com.djk.design.factory.factorymethod;
public class CarFactory implements AbstractFactory
{
@Override
public Product createProduct()
{
return new Car();
}
}
package com.djk.design.factory.factorymethod;
public class CarFactory implements AbstractFactory
{
@Override
public Product createProduct()
{
return new Car();
}
}
package com.djk.design.factory.factorymethod;
public class Bus implements Product
{
@Override
public void say()
{
System.out.println("i am a bus");
}
}
从工厂方法列子可以看出,我们抽象出来了工厂类,具体的产品延时到了抽象工厂类的子类中去创建了,后续如果增加了同一类型的产品,则只需要提供一个抽象工厂的实现类即可。