设计模式——简单工厂

工厂角色:

package designpattern.creation.simplefactory;

/*
 * 
 * 此处的工厂简单写成一个类,因为(简单工厂的工厂)不会有继承或拓展,可以不用写成接口。
 */
public class Factory {

    public IProduct getProduct(String type) {
        // TODO Auto-generated method stub
        if (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 stub
        System.out.println("ProductA.use()");
    }

}


package designpattern.creation.simplefactory;

public class ProductB implements IProduct {

    public void use() {
        // TODO Auto-generated method stub
        System.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 stub
		IProduct product = new Factory().getProduct("A");
		product.use();

		IProduct product2 = new Factory().getProduct("A");
		product2.use();
	}

}

  

总结:

1 简单,理解起来简单,客户调用简单

2 破坏了开放封闭原则

原文地址:https://www.cnblogs.com/FlyAway2013/p/3916819.html