工厂方法模式:每个工厂独立生产产品
产品接口
package factory;
/**
*
* @author V: jbossjf
*
*/
public interface Product {
//声明类所需继承的共同接口,也可以是抽象类
}
产品类
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class ProductA implements Product {
public ProductC() {
System.out.println("productA");
}
}
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class ProductB implements Product {
public ProductC() {
System.out.println("productB");
}
}
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class ProductC implements Product {
public ProductC() {
System.out.println("productC");
}
}
产品工厂接口
package factoryMehtod;
/**
*
* @author jbossjf
*
*/
public interface Factory {
//声明产生产品类的方法
public Product createProduct();
}
产品工厂
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class FactoryA implements Factory {
//实现工厂类的方法生成产品类A
public Product createProduct()
{
return new ProductA();
}
}
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class FactoryB implements Factory {
//实现工厂类的方法生成产品类B
public Product createProduct()
{
return new ProductB();
}
}
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class FactoryC implements Factory {
//实现工厂类的方法生成产品类C
public Product createProduct()
{
return new ProductC();
}
}
调用
package factoryMehtod;
/**
*
* @author V: jbossjf
*
*/
public class Client {
public static void main(String[] args) {
Factory factory;
factory = new FactoryA();
factory.createProduct();
factory = new FactoryB();
factory.createProduct();
factory = new FactoryC();
factory.createProduct();
}
}