设计模式--原型模式
跟MM用QQ聊天,一定要說些深情的話語了,我搜集了好多肉麻的情話,需要時只要copy出來放到QQ里面就行了,這就是我的情話prototype了。(6塊錢的麻辣燙,你要不要?)?? 原始模型模式:通過給出一個原型對象來指明所要創建的對象的類型,然后用復制這個原型對象的方法創建出更多同類型的對象。原始模型模式允許動態的增加或減少產品類,產品類不需要非得有任何事先確定的等級結構,原始模型模式適用于任何的等級結構。缺點是每一個類都必須配備一個克隆方法。??
?
因為Java中的提供clone()方法來實現對象的克隆(具體了解clone()按這里),所以Prototype模式實現一下子變得很簡單.
那接下來就實現我的“6塊錢的麻辣燙,你要不要?”copy;
?
package com.soyoungboy.prototype;public class AbstractWords implements Cloneable {String message;public Object clone() {Object object = null;try {object = super.clone();} catch (CloneNotSupportedException exception) {System.err.println("AbstractWords is not Cloneable");}return object;}public void setMessage(String message) {this.message = message;}public String getSpoonName() {return this.message;}}?
package com.soyoungboy.prototype;public class WordsOfLoveMeaasge extends AbstractWords {@Overridepublic void setMessage(String message) {super.setMessage(message);} }?
package com.soyoungboy.prototype;public class Main {public static void main(String[] args) {AbstractWords spoon = new WordsOfLoveMeaasge(); spoon.setMessage("6塊錢的麻辣燙,你要不要?");System.out.println(spoon.getSpoonName());System.out.println("--------------------");AbstractWords spoon2 = (AbstractWords)spoon.clone();System.out.println(spoon2.getSpoonName());System.out.println("--------------------");AbstractWords spoon3 = (AbstractWords)spoon.clone();System.out.println(spoon3.getSpoonName());}}
?
?
運行結果:
6塊錢的麻辣燙,你要不要?
--------------------
6塊錢的麻辣燙,你要不要?
--------------------
6塊錢的麻辣燙,你要不要?
2015年12月6日22:41:30更新
原型設計模式的概念:
制定創建對象的種類,通過拷貝原型來創建新的對象。
使用場景:
通過new產生對象需要非常繁瑣的數據準備或者訪問權限的時候可以使用原型設計模式。
淺拷貝,深拷貝:
淺拷貝:淺拷貝僅僅復制所考慮的對象,而不拷貝它所引用的對象;
深拷貝:深復制把要復制的對象所引用的對象都復制了一遍。
如下有篇文章:先看看,等以后深刻理解再來寫自己的思路
http://www.cnblogs.com/shuaiwhu/archive/2010/12/14/2065088.html
?原型模式的優缺點:
優點:原型設計模式能夠防止外部對這個只讀對象的修改,通常通過返回對象拷貝來實現只讀的限制
android中原型模式的使用
intent中使用原型模式:
Uri uri = Uri.parse("smsto:0800000123"); Intent shareIntent = new Intent(Intent.ACTION_SENDTO, uri); shareIntent.putExtra("sms_body", "The SMS text"); Intent intent = (Intent)shareIntent.clone() ;startActivity(intent);?
總結
以上是生活随笔為你收集整理的设计模式--原型模式的全部內容,希望文章能夠幫你解決所遇到的問題。