1. 程式人生 > >模板模式的java實現例子 大象放入冰箱

模板模式的java實現例子 大象放入冰箱

最近在看《Thinking In UML大象》。看到裡面講介面設計的時候,舉了“把大象放入冰箱”的例子。自己順手就寫了一下,用到了模板模式

從main方法開始

	public static void main(String[] args) {
		Refrige refrige = new Refrige();	// 首先需要一個冰箱
		Elephant elephant = new Elephant();	// 然後需要一頭大象
		
		Job job = new JobHandler();
		job.execute(refrige, elephant);		// 最後把大象放入冰箱
	}

Refrige和Elephant是簡單的兩個實體類,這裡方便起見,就重寫了toString
public class Refrige {
	
	@Override
	public String toString(){
		return "海爾冰箱";
	}

}

public class Elephant {
	
	@Override
	public String toString(){
		return "大象";
	}

}


Job是抽象類,其中定義了裝大象的3步open, put, close,以及順序執行這3步的方法execute

public abstract class Job {

	public abstract void open(Refrige refrige);
	
	public abstract void put(Elephant elephant);
	
	public abstract void close();
	
	public void execute(Refrige refrige, Elephant elephant){
		System.out.print("Step 1: ");
		this.open(refrige);		// 第一步開啟冰箱
		
		System.out.print("Step 2: ");
		this.put(elephant);		// 第二步放入大象
		
		System.out.print("Step 3: ");
		this.close();			// 第三步關閉冰箱
	}
	
}

之後是具體實現裝大象3步方法的子類JobHandler
public class JobHandler extends Job {

	Refrige refrige;
	Elephant elephant;
	
	@Override
	public void open(Refrige refrige) {
		this.refrige = refrige;
		System.out.println("開啟 " + this.refrige);
	}

	@Override
	public void put(Elephant elephant) {
		this.elephant = elephant;
		System.out.println("把 " + this.elephant + " 放入 " + this.refrige);
	}

	@Override
	public void close() {
		System.out.println("關閉 " + this.refrige);
	}

}


這樣就完成了”把大象放入冰箱“。

Step 1: 開啟 海爾冰箱
Step 2: 把 大象 放入 海爾冰箱
Step 3: 關閉 海爾冰箱

其實主要就是要從介面的角度考慮問題吧(Job類)

具體的實現(JobHandler)可以根據具體的情況進行變更。

相關推薦

模板模式java實現例子 大象冰箱

最近在看《Thinking In UML大象》。看到裡面講介面設計的時候,舉了“把大象放入冰箱”的例子。自己順手就寫了一下,用到了模板模式 從main方法開始 public static void main(String[] args) { Refrige refr

使用Barrier分三步將大象冰箱

PE san idg 指示 efault ridge private null BE 1 class Program 2 { 3 //構造大象和冰箱 4 private static ElephantsAnd

簡單工廠模式java實現例子

說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法模式。 它的實現方式是由一個工廠類根據傳入的引數,動態決定應該建立哪一個產品類(這些產品類繼承自一個父類或介面)

工廠方法模式java實現例子

說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、工廠方法模式:定義一個用於建立物件的介面,讓子類決定例項化哪一個類。工廠方法使一個類的例項化延遲到其子類。 核心工廠類不再負責產品的建立,這樣核心類成為一個抽象

原型模式java實現例子

說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、原型模式:用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。 2、原型模式的UML類圖 3、在Java中原型模式變成clone()方法的使用,由

觀察者模式Java實現例子

觀察者模式 觀察者模式 Observer   觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。   這個主題物件在狀態上發生變化時,會通知所有觀察者物件,讓它們能夠自動更新自己。 觀察者模式的組成   抽象主題角色:把所有對觀察者物件的引用儲存在一個集合中,每個抽象主題角色

六種常用的設計模式java實現(四)模板模式

模板模式,估計大家應該都接觸過,比如說,在完成某個業務邏輯前,需要處理一點事,在完成後也要處理一點事,這樣就可以把不一樣的地方給抽象出來,然後公共的地方都是一樣的,這樣的場景就會用到模板模式。 一、基本概念 模板方法模式是類的行為模式。準備一個抽象類,將部分

裝飾模式java實現例子

說明:本文是《大話設計模式》一書的學習文摘和網上相關資訊文摘,原書程式碼例子用C#寫,下面用Java改寫。 1、裝飾模式:在不必改變原類檔案和使用繼承的情況下,動態地擴充套件一個物件的功能。它是通過建立一個包裝物件,也就是裝飾來包裹真實的物件。 2、裝飾模式由4種角色組成:

設計模式之普通工廠模式(Java實現版本)

工廠模式是設計模式中非常容易理解的模式之一。簡單來說,工廠模式就是替代new操作的一種方式,比如我們去飯店要茶水,工廠就像是服務員,只要告訴服務員我要茶水,服務員就會把茶壺拿來,而不需要我們自己去拿茶水(好比於在main方法中直接new Tea();) 接下來貼上例子,為了方便,把所有的程式碼都

設計模式之單例模式(Java實現版)

單例模式作用在一個類上,這個類提供了一種方法來訪問它的唯一物件,可以直接訪問,而不需要例項化類的物件。單例模式的作用是保證一個類只有一個物件例項。 class Singleton { private static Singleton instance = new Singleton()

設計模式之抽象工廠模式(Java實現)

抽象工廠是一個超級工廠,用來建立其他工廠,又稱為工廠的工廠,也就是對各種不同的工廠再次進行抽象。在抽象工廠模式中,介面負責建立相關物件的工廠, 每個生成的工廠可以按照工廠模式提供物件。 首先建立兩個介面然後實現具體類 //再建立一個介面Plant interface Plant {

設計模式-模板模式-C++實現

模板模式:定義一個操作的演算法和骨架,而將一些步驟延遲到子類中。使得子類可以不改變一個演算法的結構的情況下可以重新定義這個演算法的一些步驟。 比如: 炒菜這件事情就有統一的步驟,先放油再放調料加火炒菜,這個固定不變的。而且順序也是不變的。但是炒不同的菜加油的多少,火候的掌握是不相同的

設計模式之建造者模式-java實現

設計模式建造者模式的java實現類 第一步、建立一個要被構建的類 Persion類並宣告屬性 package com.chinamsp.mytest.pattern.builder; class Persion { private String name;

設計模式(一):單例模式 java實現

參考:http://blog.csdn.net/jason0539/article/details/23297037/ 單例模式:指的是一個類只有一個例項物件。它的設計是為了實現類的單一功能。專注於自己的事情。 有如下三個特點: 單例類只有一個

橋接模式(java實現)

橋接模式 手機品牌M和N都有遊戲和通訊錄功能,都用繼承實現,程式碼如下. public  class Brand { public void run() {} } public class MBrand extends Brand{ } public class NBran

java-hashset隨機數字後大小排序的假象,以及數字大小與數字範圍的關係。

起因 首先是因為thinking in java的一個例子(一個存放int的set集合): 但是與他期待的output不一致: 出現了從小到大的順序排列輸出。 仔細看看果然沒什麼差別(網上看到原因是jdk版本不一致,hashmap的hash演算法

生產者消費者模式-Java實現

感知階段     隨著軟體業的發展,網際網路使用者的日漸增多,併發這門藝術的興起似乎是那麼合情合理。每日PV十多億的淘寶,處理併發的手段可謂是業界一流。使用者訪問淘寶首頁的平均等待時間只有區區幾秒,但是伺服器所處理的流程十分複雜。首先負責首頁的伺服器就有好幾千臺,通過計算把

大話設計模式java實現

自己用java實現了一下大話設計模式一書中的各個模式。github地址:https://github.com/ssystc/DesignPattern.gitCSDN下載地址:https://download.csdn.net/download/u014627099/1053

為什麼設計模式java實現的書比較多,C++卻很少.

我們發現設計模式在Java社群很流行,但是在C++社群卻沒有那麼被關注,甚至有點被排斥,究竟是什麼原因造成這個差異的呢?   (1)C++記憶體需要自己管理,所以有些模式在C++裡使用不是那麼方便,但是Java不用關心記憶體,所以在Java裡的使用設計模式有天生的優勢。隨

中介者模式(java實現)

中介者模式 世界需要和平 由於各國之間代表的利益不同,所以矛盾衝突是在所難免的,聯合國組織由各國的代表組成,用來維護國際和平與安全,它就是一個調停者,中介者的角色.國與國之間的關係,就如同不同的物件與物件之間的關係,這就要求物件之間需要知道其他所有的物件,儘管將一個系統分割