抽象工厂模式: 为工厂方法的产品增加产品线
增加的Gift接口
package abstractFactory;
/**
*
* @author V: jbossjf
*
*/
public interface Gift {
//声明产品赠品的接口,当然也可以是抽象类,同样为了简单就不声明方法了
}
GiftA类
package abstractFactory;
/**
*
* @author V:jbossjf
*
*/
public class GiftA implements Gift {
public GiftA()
{
System.out.println("GiftA");
}
}
GiftB类
package abstractFactory;
/**
*
* @author V:jbossjf
*
*/
public class GiftB implements Gift {
public GiftB()
{
System.out.println("GiftB");
}
}
Factory接口
package abstractFactory;
/**
*
* @author V:jbossjf
*声明Product类工厂和Gift类工厂的工同工厂接口
*/
public interface Factory {
public Product createProduct();
public Gift createGift();
}
生成ProductA和GiftA的FactoryA
package abstractFactory;
/**
*
* @author V: jbossjf
*FactoryA可以生成ProductA和GiftA
*/
public class FactoryA implements Factory {
@Override
public Product createProduct()
{
return new ProductA();
}
@Override
public Gift createGift()
{
return new GiftA();
}
}
生成ProductB和GiftB的FactoryB
package abstractFactory;
/**
*
* @author V:jbossjf
*FactoryB可以生成ProductB和GiftB
*/
public class FactoryB implements Factory {
@Override
public Product createProduct() {
return new ProductB();
}
@Override
public Gift createGift() {
return new GiftB();
}
}
调用
package abstractFactory;
/**
*
* @author V : jbossjf
*
*/
public class Client {
public static void main(String[] args) {
Factory factory;
factory = new FactoryA();
factory.createProduct();
factory.createGift();
factory = new FactoryB();
factory.createProduct();
factory.createGift();
}
}