原型模式(prototype)優缺點和一些疑惑請大家指教
原型模式(prototype)的實現主要是利用sun公司提供克隆機制來實現的,在Object這個類中有一個clone方法,這個方法
是有protected 來修飾的,所有普通的java類要想具有克隆能力必須去重寫這個clone方法,我們可以把這個方法封住到一個
抽象類裡,這樣只有再我們的系統在那個類需要具有克隆能力就去繼承者個抽象類。
程式碼如下(我是看了banq對prototype的介紹些的帖子所以程式碼是一樣的也可說是抄襲的 呵呵呵 我只想說明我的觀點)
封裝了clone方法的抽象類
public abstract class CloneableObject implements Cloneable{
public Object clone(){
Object obj = null;
try{
obj = super.clone() ;
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return obj;
}
}
系統中所有的需要具備clone方法的類只要繼承他就可以了 例如
public class Student extends CloneableObject{
private String name;
private String address;
private String sex;
public Student() {}
public Student(String name, String address,String sex){
this.name = name;
this.address = address;
this.sex = sex;
}
public String toString(){
return "name:"+name+"address:"+address+"sex"+sex;
}
}
測試程式碼
public class Test {
public static void main(String[] args) {
Student stu = new Student("Tom","USA","女");
System.out.println(stu);
Student stu1 =(Student) stu.clone() ;
System.out.println(stu1);
}
}
執行結果
name:Tomaddress:USAsex女
name:Tomaddress:USAsex女
這就是我們常用的原型模式。但是我細想一下這樣的模式還是有一些缺點的
例如:要是類具備克隆能力必須去繼承一個抽象類,就像struts中的action 多多少少有一些耦合,熟悉ThreadLocal
本地執行緒這個類的朋友應該這道,只有將一個普通的POJO類(不需要實現任何藉口),放到裡面,不同的執行緒就可以
去到這個物件的克隆物件,請個位朋友告訴我其中的原理?
我想實現的效果就是,封裝一個克隆工廠(CloneFactory)只有將普通的POJO類作為引數,就可以的道這個類的克隆物件
請大家指教
是有protected 來修飾的,所有普通的java類要想具有克隆能力必須去重寫這個clone方法,我們可以把這個方法封住到一個
抽象類裡,這樣只有再我們的系統在那個類需要具有克隆能力就去繼承者個抽象類。
程式碼如下(我是看了banq對prototype的介紹些的帖子所以程式碼是一樣的也可說是抄襲的 呵呵呵 我只想說明我的觀點)
封裝了clone方法的抽象類
public abstract class CloneableObject implements Cloneable{
public Object clone(){
Object obj = null;
try{
obj = super.clone() ;
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return obj;
}
}
系統中所有的需要具備clone方法的類只要繼承他就可以了 例如
public class Student extends CloneableObject{
private String name;
private String address;
private String sex;
public Student() {}
public Student(String name, String address,String sex){
this.name = name;
this.address = address;
this.sex = sex;
}
public String toString(){
return "name:"+name+"address:"+address+"sex"+sex;
}
}
測試程式碼
public class Test {
public static void main(String[] args) {
Student stu = new Student("Tom","USA","女");
System.out.println(stu);
Student stu1 =(Student) stu.clone() ;
System.out.println(stu1);
}
}
執行結果
name:Tomaddress:USAsex女
name:Tomaddress:USAsex女
這就是我們常用的原型模式。但是我細想一下這樣的模式還是有一些缺點的
例如:要是類具備克隆能力必須去繼承一個抽象類,就像struts中的action 多多少少有一些耦合,熟悉ThreadLocal
本地執行緒這個類的朋友應該這道,只有將一個普通的POJO類(不需要實現任何藉口),放到裡面,不同的執行緒就可以
去到這個物件的克隆物件,請個位朋友告訴我其中的原理?
我想實現的效果就是,封裝一個克隆工廠(CloneFactory)只有將普通的POJO類作為引數,就可以的道這個類的克隆物件
請大家指教
相關文章
- nosql實體的疑惑,請指教SQL
- 原型模式(Prototype)原型模式
- Java單例模式:缺點和優點Java單例模式
- 原型模式(Prototype Pattern)。原型模式
- 設計模式-原型模式(Prototype)設計模式原型
- 建立模式 02-Prototype(原型)模式原型
- 設計模式--原型模式(Prototype Pattern)設計模式原型
- 設計模式之-原型模式-Prototype設計模式原型
- 請教prototype模式!模式
- 3.4 PROTOTYPE(原型) — 物件建立型模式原型物件模式
- 《設計模式 》 - 4. 原型模式( Prototype )設計模式原型
- 設計模式--原型模式Prototype(建立型)設計模式原型
- 談談設計模式~原型模式(Prototype)設計模式原型
- logcat 引數的一些疑惑,求大佬指教GC
- C#設計模式-原型模式(Prototype Pattern)C#設計模式原型
- 設計模式的征途—5.原型(Prototype)模式設計模式原型
- Scala 與設計模式(三):Prototype 原型模式設計模式原型
- C#設計模式系列:原型模式(Prototype)C#設計模式原型
- JAVA設計模式之 原型模式【Prototype Pattern】Java設計模式原型
- 設計模式-原型模式(Prototype)【重點:淺複製與深複製】設計模式原型
- 【Java面試】請說一下Mysql索引的優點和缺點?Java面試MySql索引
- 繼承的優點和缺點繼承
- iframe有哪些優點和缺點?
- 原型和原型鏈 prototype和proto的區別詳情原型
- JavaScript prototype 原型JavaScript原型
- JavaScript:原型(prototype)JavaScript原型
- 深入理解javascript原型和閉包(3)——prototype原型JavaScript原型
- mysql和Oracle的特點,優缺點MySqlOracle
- MySQL InnoDB獨立表空間模式的優點和缺點介紹MySql模式
- 開源專案BIE大家用過嗎,請指教
- 一個支付系統的四色原型,請指教原型
- JavaScript prototype原型用法JavaScript原型
- rem佈局原理和優缺點REM
- HTTP和RPC的優缺點HTTPRPC
- svn和git版本管理優缺點Git
- RabbitMQ優缺點MQ
- 一天一個設計模式(四) – 原型模式(Prototype)設計模式原型
- 一天一個設計模式(四) - 原型模式(Prototype)設計模式原型