设计模式-创建型模式-原型
2011-04-21 08:37
260 查看
创建型模式:抽象了实例化过程,它们帮助一个系统如何独立于如何创建、组合和表示它的哪些对象。一个创建型模式使用了继承改变实例化的类,而一个对象的实例化将委托给别一个对象来现实。
prototype模式: 用原型实例指定创建对象的种类,并且通过这些原型创建新的对象.
适用性: 1、当一个系统应该独立于它的产品创建,构成、和表示时
2、当一个实例化的类是在运行时刻指定的
3、为了避免创建一个和产品类层次平行的工厂类层次
4、当一个类实例只能有几个不同状态组合中的一种时
代码:
package prototype.mypackage;
import java.io.*;
public interface IGraphic extends Cloneable, Serializable {
public String getName();
public void setName(String gName);
}
package prototype.mypackage;
import java.lang.*;
import java.io.*;
public abstract class Graphic implements IGraphic {
private String name;
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e){
System.out.println("Do not support clone !!!");
throw new InternalError();
}
}
public String getName() {
return name;
}
public void setName(String gName) {
name = gName;
}
public abstract void DoSomething();
}
package prototype;
import prototype.mypackage.Graphic;
public class LineSymbol extends Graphic {
/**
*
*/
private static final long serialVersionUID = -5414856753222243031L;
public LineSymbol() {
}
public void DoSomething() {
System.out.println("I am used to draw a line !");
}
}
package prototype;
import prototype.mypackage.Graphic;
public class NoteSymbol extends Graphic {
public NoteSymbol() {
}
public void DoSomething() {
System.out.println("I am used to draw a note !");
}
}
package prototype;
import java.util.*;
public class SymbolLoader {
private Hashtable symbols = new Hashtable();
public SymbolLoader() {
symbols.put("Line", new LineSymbol());
symbols.put("Note", new NoteSymbol());
}
public Hashtable getSymbols() {
return symbols;
}
}
import java.util.*;
import java.lang.*;
import prototype.mypackage.Graphic;
public class GraphicTool {
public GraphicTool() {
}
public static void main(String[] args) {
//----- Initial our prototype instance ----------
SymbolLoader myLoader = new SymbolLoader();
Hashtable mySymbols = myLoader.getSymbols();
//----- Draw a Line -------------------------------
Graphic myLine = (Graphic) ((Graphic) mySymbols.get("Line")).clone();
myLine.DoSomething();
}
}
prototype模式: 用原型实例指定创建对象的种类,并且通过这些原型创建新的对象.
适用性: 1、当一个系统应该独立于它的产品创建,构成、和表示时
2、当一个实例化的类是在运行时刻指定的
3、为了避免创建一个和产品类层次平行的工厂类层次
4、当一个类实例只能有几个不同状态组合中的一种时
代码:
package prototype.mypackage;
import java.io.*;
public interface IGraphic extends Cloneable, Serializable {
public String getName();
public void setName(String gName);
}
package prototype.mypackage;
import java.lang.*;
import java.io.*;
public abstract class Graphic implements IGraphic {
private String name;
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e){
System.out.println("Do not support clone !!!");
throw new InternalError();
}
}
public String getName() {
return name;
}
public void setName(String gName) {
name = gName;
}
public abstract void DoSomething();
}
package prototype;
import prototype.mypackage.Graphic;
public class LineSymbol extends Graphic {
/**
*
*/
private static final long serialVersionUID = -5414856753222243031L;
public LineSymbol() {
}
public void DoSomething() {
System.out.println("I am used to draw a line !");
}
}
package prototype;
import prototype.mypackage.Graphic;
public class NoteSymbol extends Graphic {
public NoteSymbol() {
}
public void DoSomething() {
System.out.println("I am used to draw a note !");
}
}
package prototype;
import java.util.*;
public class SymbolLoader {
private Hashtable symbols = new Hashtable();
public SymbolLoader() {
symbols.put("Line", new LineSymbol());
symbols.put("Note", new NoteSymbol());
}
public Hashtable getSymbols() {
return symbols;
}
}
import java.util.*;
import java.lang.*;
import prototype.mypackage.Graphic;
public class GraphicTool {
public GraphicTool() {
}
public static void main(String[] args) {
//----- Initial our prototype instance ----------
SymbolLoader myLoader = new SymbolLoader();
Hashtable mySymbols = myLoader.getSymbols();
//----- Draw a Line -------------------------------
Graphic myLine = (Graphic) ((Graphic) mySymbols.get("Line")).clone();
myLine.DoSomething();
}
}
相关文章推荐
- 设计模式-创建型-原型模式(Prototype)
- 设计模式五:Prototype原型模式——对象创建型模式
- 设计模式 : 创建型模式——原型模式
- 23种设计模式(5)_创建型_原型模式(Prototype Pattern)
- 【设计模式】—-(5)原型模式(创建型)
- "围观"设计模式(10)--创建型之原型模式(Prototype Pattern)
- 跟着实例学习设计模式(7)-原型模式prototype(创建型)
- 【设计模式】创建型模式-原型模式
- 【设计模式】创建型模式之原型Prototype
- 设计模式:创建型模式:原型模式(prototype pattern)
- 设计模式之创建型原型模式
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 二十三种设计模式之创建型模式之原型模式
- 面向对象设计模式之Prototype原型模式(创建型)
- 【设计模式基础】创建型模式 - 6 - 原型(Prototype)
- C#设计模式之五原型模式(Prototype Pattern)【创建型】
- 设计模式-创建型-原型
- Java设计模式_创建型_原型模式_复制对象及状态
- 设计模式之创建型模式―― 1.5 原型模式
- 创建型设计-原型模式