java设计模式--[创建模式]--简单工厂[simple factory]

一. 簡單工廠
    其實它不是一個設計模式,反而比較像是一種編程習慣,由于經常被使用,有些人把這個習慣誤認為是"工廠模式",在談論工廠模式前,先將簡單工廠熟悉一下;

 

二. 簡單工廠的UML類圖如下:



 

三.在此用一個事例說明簡單工廠的用法: 在一個酒店里可以做出多種名菜.完整示例代碼如下:

 

 1. 菜肴的加工過程

package creationalPattern.factory.simple;
/**
 * 名菜加工過程
 * @author Liyongbin
 * @date 2011-02-06
 */
public interface ICuisine {
	//原料採購
	public String purchase();
	//烹調加工
	public String processing();
	//成品銷售
	public String vendition();
}

 2. 川菜的做法

package creationalPattern.factory.simple;
/**
 * 川菜類
 * @author Liyongbin
 * @date 2011-02-06
 */
public class SichuanCuisine implements ICuisine{
	@Override
	public String purchase() {
		return "川菜原料採購";
	}
	
	@Override
	public String processing() {
		return "川菜烹調加工";
	}

	@Override
	public String vendition() {
		return "川菜成品銷售";
	}
}

    湘菜的做法:

package creationalPattern.factory.simple;
/**
 * 湘菜類
 * @author Liyongbin
 * @date 2011-02-06
 */
public class HunanCuisine implements ICuisine{

	@Override
	public String purchase() {
		return "湘菜原料採購";
	}
	
	@Override
	public String processing() {
		return "湘菜烹調加工";
	}

	@Override
	public String vendition() {
		return "湘菜成品銷售";
	}
}

   粵菜的做法:

package creationalPattern.factory.simple;
/**
 * 粵菜類
 * @author Liyongbin
 * @date 2011-02-06
 */
public class ContoneseCuisine implements ICuisine{

	@Override
	public String purchase() {
		return "粵菜原料採購";
	}

	@Override
	public String processing() {
		return "粵菜烹調加工";
	}

	@Override
	public String vendition() {
		return "粵菜成品銷售";
	}
}

 3.菜肴烹調工廠[簡單工廠]

package creationalPattern.factory.simple;

/**
 * 菜肴烹調工廠
 * @author Liyongbin
 * @date 2011-02-06
 */
public class CuisineFactory {
	//制作菜肴的方法
	public ICuisine cooking(String type){
		ICuisine cuisine=null;
		if (type.equalsIgnoreCase("Hunan")) {//湘菜
			cuisine=new HunanCuisine();
		} else if(type.equalsIgnoreCase("Sichuan")){//川菜
			cuisine=new SichuanCuisine();
		} else if(type.equalsIgnoreCase("Guangdong")){//粵菜
			cuisine=new ContoneseCuisine();	
		}
		return cuisine;
	}
}

 4. 酒店

package creationalPattern.factory.simple;

/**
 * 香格裡拉酒店
 * @author Administrator
 *
 */
public class ShangriLaHotel {
	CuisineFactory cf= new CuisineFactory();
	/**
	 * 訂單方法
	 * @param localCuisine預訂的地方菜
	 */
	public void order(String localCuisine){
		ICuisine cuisine=cf.cooking(localCuisine);
	        System.out.print(cuisine.purchase()+"|");
		System.out.print(cuisine.processing()+"|");
		System.out.println(cuisine.vendition());
	}
}

 5. 簡單工廠的測試

package creationalPattern.factory.simple;

public class SimpleFactoryTest {

	/**
	 *  簡單工廠測試方法
	 * @param args
	 */
	public static void main(String[] args) {
		ShangriLaHotel slh = new ShangriLaHotel();
		slh.order("Sichuan");
		slh.order("Hunan");
		slh.order("Guangdong");
	}
}

 6. 運行結果如下:

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值