工厂方法模式

阅读《研磨设计模式》笔记。之后若有所感,再补充。
工厂方法模式的目的:让父类在不知道具体实现的情况下,完成自身的功能调用,而具体的实现延迟到子类。
示例:
/**
 * @description工厂方法所创建的对象的接口
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public interface Product {
	public void someOperation();
}

/**
 * @description
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class ConcreteProduct implements Product{

	/* (non-Javadoc)
	 * @see factorymethod.Product#someOperation()
	 */
	@Override
	public void someOperation() {
		System.out.println("ConcreteProduct: someOperation!!!");
	}

}

package factorymethod;

/**
 * @description
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public abstract class Creator {
	/**
	 * 创建Product 的工厂方法
	 * @return
	 */
	protected abstract Product factoryMethod();
	
	public void someOperation(){
		//其实就是在这儿实例化Product的对象,并且调用相应的方法完成功能
		Product product = factoryMethod();
		product.someOperation();
	}
}

package factorymethod;

/**
 * @description
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class ConcreteCreator extends Creator{

	/* (non-Javadoc)
	 * @see factorymethod.Creator#factoryMethod()
	 */
	@Override
	protected Product factoryMethod() {
		return new ConcreteProduct();
	}
}

package factorymethod;

/**
 * @description 客户端直接调用需要的creator的实现对象,完成功能
 * @author liuwei
 * @date 2014-4-16
 * @version 1.0
 */
public class Client {
	public static void main(String[] strs){
		Creator creator = new ConcreteCreator();
		creator.someOperation();
	}
}

你可能感兴趣的:(工厂方法模式)