上次說了兩種設計模式,這次我們說一下原型模式,原型模式其實理解也很簡單,就是一個原型,一個實現它自身的複製。《西遊記》裡經常會出現真假唐僧,真假孫悟空這種事件,這裡我們就根據這個事件來說一下原型模式,首先做假的話必須具備真身自有的特點,(例:外觀,口音)這些特點也必須跟原來的一樣,才能讓人真假難分。我們接著上一個策略模式來實現原型模式,首先我們先定義一下悟空類:
public class Wukong implements Person, Cloneable {@Overridepublic String save() {return "大徒弟孫悟空來救師傅";}@Overrideprotected Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}}
這裡悟空就實現了自身的複製,即是複製,對自身的類進行複製,這樣才能讓人真假難分啊,接下來就是調用了。
public class XiyoujiActivity extends Activity {private ListView listView;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);listView = (ListView) findViewById(R.id.listView1);Tangseng tangseng = new Tangseng();Wukong wukong = new Wukong();ArrayList<String> lists = new ArrayList<String>();lists.add(tangseng.help(wukong));lists.add(tangseng.help((Person)wukong.clone()));ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, lists);listView.setAdapter(adapter);}}
其他的類我們就借用了上一篇策略模式的類了,其他的沒有改變,這裡我們解釋一下,因為複製的話返回的是對象,我們進行了強制轉換,將他返回特定的類型,這樣唐僧在呼救的時候假孫悟空也可以去救。
最後,最後啟動並執行