閱讀482 返回首頁    go 小米 go 小米6


【設計模式】【簡單工廠】

public interface Output
{
	//接口裏定義的屬性隻能是常量
	int MAX_CACHE_LINE = 50;
	//接口裏定義的隻能是public的抽象實例方法
	void out();
	void getData(String msg);
}
/**
 * Description:
 * <br/>網站: <a href="https://www.crazyit.org">瘋狂Java聯盟</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */

//讓Printer類實現Output
public class Printer implements Output
{
	private String[] printData = new String[MAX_CACHE_LINE];
	//用以記錄當前需打印的作業數
	private int dataNum = 0;
	public void out()
	{
		//隻要還有作業,繼續打印
		while(dataNum > 0)
		{
			System.out.println("打印機打印:" + printData[0]);
			//把作業隊列整體前移一位,並將剩下的作業數減1
			System.arraycopy(printData , 1, printData, 0, --dataNum);
		}
	}
	public void getData(String msg)
	{
		if (dataNum >= MAX_CACHE_LINE)
		{
			System.out.println("輸出隊列已滿,添加失敗");
		}
		else
		{
			//把打印數據添加到隊列裏,已保存數據的數量加1。
			printData[dataNum++] = msg;
		}
	}
}


/**
 * Description:
 * <br/>網站: <a href="https://www.crazyit.org">瘋狂Java聯盟</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class BetterPrinter implements Output
{
	private String[] printData = new String[MAX_CACHE_LINE * 2];
	//用以記錄當前需打印的作業數
	private int dataNum = 0;
	public void out()
	{
		//隻要還有作業,繼續打印
		while(dataNum > 0)
		{
			System.out.println("高速打印機正在打印:" + printData[0]);
			//把作業隊列整體前移一位,並將剩下的作業數減1
			System.arraycopy(printData , 1, printData, 0, --dataNum);
		}
	}
	public void getData(String msg)
	{
		if (dataNum >= MAX_CACHE_LINE * 2)
		{
			System.out.println("輸出隊列已滿,添加失敗");
		}
		else
		{
			//把打印數據添加到隊列裏,已保存數據的數量加1。
			printData[dataNum++] = msg;
		}
	}
}


/**
 * Description:
 * <br/>網站: <a href="https://www.crazyit.org">瘋狂Java聯盟</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class BetterPrinter implements Output
{
	private String[] printData = new String[MAX_CACHE_LINE * 2];
	//用以記錄當前需打印的作業數
	private int dataNum = 0;
	public void out()
	{
		//隻要還有作業,繼續打印
		while(dataNum > 0)
		{
			System.out.println("高速打印機正在打印:" + printData[0]);
			//把作業隊列整體前移一位,並將剩下的作業數減1
			System.arraycopy(printData , 1, printData, 0, --dataNum);
		}
	}
	public void getData(String msg)
	{
		if (dataNum >= MAX_CACHE_LINE * 2)
		{
			System.out.println("輸出隊列已滿,添加失敗");
		}
		else
		{
			//把打印數據添加到隊列裏,已保存數據的數量加1。
			printData[dataNum++] = msg;
		}
	}
}



/**
 * Description:
 * <br/>網站: <a href="https://www.crazyit.org">瘋狂Java聯盟</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class Computer
{
	private Output out;

	public Computer(Output out)
	{
		this.out = out;
	}
	//定義一個模擬獲取字符串輸入的方法
	public void keyIn(String msg)
	{
		out.getData(msg);
	}
	//定義一個模擬打印的方法
	public void print()
	{
		out.out();
	}
	public static void main(String[] args) 
	{
		//創建OutputFactory
		OutputFactory of = new OutputFactory();
		//將Output對象傳入,創建Computer對象
		Computer c = new Computer(of.getOutput());
		c.keyIn("輕量級Java EE企業應用實戰");
		c.keyIn("瘋狂Java講義");
		c.print();
	}
}



最後更新:2017-04-04 07:03:38

  上一篇:go android 之斷點續傳詳解三部曲之[三] → 多任務同時下載
  下一篇:go Firefox OS應用市場截圖曝光