liguofeng29’s blog

個人勉強用ブログだっす。

デザインパターン - Prototype

 【Prototypeパターンとは】

インスタンスをコピーして利用する。

 

Prototypeパターンのクラス図】

 

Prototypeパターンのメリット】

複雑な生成過程のあるインスタンスをコピーして利用できる。

 

【サンプル】

Paper.java
package prototype;
 
public class Paper implements Cloneable{
 
    private String text = "";
 
    public void addLine(String text) {
        this.text += text;
        this.text += System.getProperty("line.separator");
 
    }
 
    public void showText() {
       System.out.println(text);
    }
 
    public Paper createClone() throws CloneNotSupportedException {
        return (Paper)clone();
    }
}
 
 
 
 
 
PrototypeTest.java
package prototype;
 
public class PrototypeTest {
 
    /**
     * @param args
     * @throws CloneNotSupportedException
     */
    public static void main(String[] args) throws CloneNotSupportedException {
        // 試作品を作る
        Paper paper = new Paper();
 
        // 文字を書きます
        paper.addLine("1行目書きました");
        paper.addLine("2行目書きました");
        paper.addLine("3行目書きました");
        //
        paper.showText();
 
        // 紙をコピーする
        Paper paper2 = paper.createClone();
        paper2.showText();
    }
}
 
 
 
結果
1行目書きました
2行目書きました
3行目書きました
 
1行目書きました
2行目書きました
3行目書きました