设计模式——简单工厂
工厂角色:
package designpattern.creation.simplefactory;/** * 此处的工厂简单写成一个类,因为(简单工厂的工厂)不会有继承或拓展,可以不用写成接口。*/ public class Factory {public IProduct getProduct(String type) {// TODO Auto-generated method stubif (type.equals("A")) {return new ProductA();} else if(type.equals("B")) {return new ProductA();}/** 如果需要增加产品,则修改此类,需要在此增加判断—— 这样就破坏了类的完整性* —— 对修改封闭,对拓展开放!*/return null;} }
产品角色:
package designpattern.creation.simplefactory;public interface IProduct {void use(); }package designpattern.creation.simplefactory;public class ProductA implements IProduct {public void use() {// TODO Auto-generated method stubSystem.out.println("ProductA.use()");}}package designpattern.creation.simplefactory;public class ProductB implements IProduct {public void use() {// TODO Auto-generated method stubSystem.out.println("ProductB.use()");}}
客户端:
package designpattern.creation.simplefactory;/*** * 简单工厂三因素:* 1 工厂只有一个方法* 2 方法有一个参数(或多个)* 3 客户端通过向工厂的那个方法传入不同参数来获取对应的产品**/
public class Client {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubIProduct product = new Factory().getProduct("A");product.use();IProduct product2 = new Factory().getProduct("A");product2.use();}}
总结:
1 简单,理解起来简单,客户调用简单
2 破坏了开放封闭原则
posted on 2014-08-16 19:46 CanntBelieve 阅读(...) 评论(...) 编辑 收藏