Design Pattern (Factory Method)[Factory Method Pattern]

[list]
[1]工厂方法模式
    在上一个博客中【 http://tjychyangchenhui.iteye.com/admin/blogs/1571293
    介绍了[Simple Factory Pattern],接下来将会探讨[Factory Method Pattern]与[Simple Factory Method Pattern] 模式的异同之处和[Factory Method Pattern] 的优势所在.

[2][Factory Method Pattern] 的非静态工厂代码示例

  
package com.tjych.factorypattern.factorymethod;

public interface IFactory {
	
	
/**
 * @label Creates
 */

/*#com.tjych.factorypattern.factorymethod.Product lnkProduct*/

public IProduct createProduct();	
	
}

  



package com.tjych.factorypattern.factorymethod;

public interface IFactorySecond extends IFactory {
	
}



package com.tjych.factorypattern.factorymethod;


/**
 * 工厂类,用于产生客户希望的Product
 * 
 * @author 杨晨辉
 * 
 */
public class FactoryDemo1 implements IFactory{

	
	
/**
 * @label Create
 */

/*#com.tjych.factorypattern.factorymethod.Product1 lnkProduct1*/

@Override
	public IProduct createProduct() {
		
		return new Product1();
	}

}




package com.tjych.factorypattern.factorymethod;

public class FactoryDemo2 implements IFactory {

	
/**
 * @label Create
 */

/*#com.tjych.factorypattern.factorymethod.Product2 lnkProduct2*/

@Override
	public IProduct createProduct() {
		
		return new Product2();
		
	}

}




package com.tjych.factorypattern.factorymethod;

public class FactorySecond1 implements IFactorySecond {

	@Override
	public IProduct createProduct() {
		return new ProductSecond1();
	}

}




package com.tjych.factorypattern.factorymethod;

public class FactorySecond2 implements IFactorySecond {

	@Override
	public IProduct createProduct() {
		return new ProductSecond2();
	}

}





package com.tjych.factorypattern.factorymethod;

public interface IProduct {
	public void sampleMethod();

}



package com.tjych.factorypattern.factorymethod;

public interface IProductSecond extends IProduct {

	void test();

}




package com.tjych.factorypattern.factorymethod;

public class Product1 implements IProduct {

	@Override
	public void sampleMethod() {
		System.out.println("This is the method sampleMethod of Product1");

	}

}





package com.tjych.factorypattern.factorymethod;

/**
 * 
 * @author 杨晨辉
 * 
 */
public class Product2 implements IProduct {

	@Override
	public void sampleMethod() {
		System.out.println("this is the sampleMethod of Product2");
	}

}





package com.tjych.factorypattern.factorymethod;

public class ProductSecond1 implements IProductSecond {

	@Override
	public void sampleMethod() {
		System.out.println("this is the sampleMethod of ProductSecond1");
	}

	@Override
	public void test() {
		// TODO Auto-generated method stub
		
	}

}




package com.tjych.factorypattern.factorymethod;

public class ProductSecond2 implements IProductSecond {

	@Override
	public void sampleMethod() {
		System.out.println("this is the sampleMethod of ProductSecond2");
	}

	@Override
	public void test() {
		// TODO Auto-generated method stub
		
	}

}


[3] [Factory Method Pattern] 的UML 类图




[/list]

猜你喜欢

转载自tjychyangchenhui.iteye.com/blog/1571432
今日推荐