10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

工厂角色:

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();
    }

}

 

posted on 2014-08-16 19:49  CanntBelieve  阅读(166)  评论(0编辑  收藏  举报