工厂角色:
package designpattern.creation.factorymethod;public class FactoryA { public IProduct getProduct() { return new ProductA(); } }package designpattern.creation.factorymethod;public class FactoryB { public IProduct getProduct() { return new ProductB(); } }
产品角色:
package designpattern.creation.factorymethod;public interface IProduct { void use();}package designpattern.creation.factorymethod;public class ProductA implements IProduct { public void use() { // TODO Auto-generated method stub System.out.println("ProductA.use()"); }}package designpattern.creation.factorymethod;public class ProductB implements IProduct { public void use() { // TODO Auto-generated method stub System.out.println("ProductB.use()"); }}
客户端:
package designpattern.creation.factorymethod;/* * * 工厂方法用于处理更加复杂的情况。 * —— 当产品出现不用种类的时候。 * 为什么 称这种模式为工厂方法? ? * * 要素: * * 1 只有多个工厂 * 2 工厂有一个方法 ,每个工厂只负责生产一个产品 * 3 客户端通过调用不同工厂的相同方法获取对应的不同的产品 * * 缺点: * 每增加一个产品则需要增加2个类: 一个工厂、一个具体产品—— 这样导致类的膨胀 * * * 使用场景? * */public class Client { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub IProduct product = new FactoryA().getProduct(); product.use(); IProduct product2 = new FactoryB().getProduct(); product2.use(); }}