原型設(shè)計(jì)模式

一、UML

Prototype.png

二、基本步驟

2.1、創(chuàng)建需要使用原型模式的類,實(shí)現(xiàn)Cloneable接口;
2.2、重寫clone()方法,使用其父類的clone()方法構(gòu)建一個(gè)對(duì)象;
2.3、將原對(duì)象的各個(gè)成員依次拷貝(賦值)給新創(chuàng)建的對(duì)象;
2.4、將新對(duì)象返回,需要做異常處理;

三、實(shí)現(xiàn)方式

3.1、定義
/**
 * @author lizihanglove
 * @date 2018/1/12
 * @email one_mighty@163.com
 * @desc 原型設(shè)計(jì)模式
 */

public class UrlPrototype implements Cloneable {
    private String host;
    private String port;
    private String protocol;

    public void printUrl() {
        System.out.println("The Url is:"+protocol+"http://"+host+":"+port);
    }

    @Override
    public UrlPrototype clone() {
        try {
            UrlPrototype urlPrototype = (UrlPrototype) super.clone();
            urlPrototype.host = this.host;
            urlPrototype.port = this.port;
            urlPrototype.protocol = this.protocol;
            return urlPrototype;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

    public String getProtocol() {
        return protocol;
    }

    public void setProtocol(String protocol) {
        this.protocol = protocol;
    }
}

3.2、調(diào)用
  UrlPrototype original = new UrlPrototype();
        original.setHost("www.lizihanglove.website");
        original.setPort("8080");
        original.setProtocol("https");
        original.printUrl();
        System.out.println("--------------------------------------");
        UrlPrototype reborn = original.clone();
        reborn.printUrl();
        System.out.println("--------------------------------------");
        reborn.setPort("80");
        reborn.setProtocol("http");
        reborn.printUrl();


3.3、結(jié)果
System.out: The Url is:https//www.lizihanglove.website:8080
System.out: --------------------------------------
System.out: The Url is:https//www.lizihanglove.website:8080
System.out: --------------------------------------
System.out: The Url is:http//www.lizihanglove.website:80
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 啥叫原型模式? 創(chuàng)建一個(gè)新的對(duì)象,然后通過復(fù)制現(xiàn)有的對(duì)象,稱為原型。原型本身使用模板創(chuàng)建,后續(xù)實(shí)例是克隆模板產(chǎn)生的...
    江將蔣醬閱讀 806評(píng)論 0 1
  • 一、介紹及定義 ①介紹:原型模式是一種創(chuàng)建型的模式。原型兩個(gè)字表明了該模式應(yīng)該有一個(gè)樣板實(shí)例,用戶從這個(gè)樣板實(shí)例中...
    Ayres閱讀 929評(píng)論 0 2
  • 淺復(fù)制與深復(fù)制 淺復(fù)制被復(fù)制對(duì)象的所有變量都含有與原來對(duì)象相同的值,而所有的對(duì)其他對(duì)象的引用仍然只指向原來的對(duì)象,...
    人失格閱讀 691評(píng)論 0 1
  • 我們?cè)谌粘V杏盟帟r(shí),例如一些肺結(jié)核的用藥、腫瘤用藥、抗生素用藥等,常常會(huì)聽到“耐藥”這個(gè)詞,但是你是否真正了解耐藥...
    鍇哥的世界閱讀 1,288評(píng)論 0 0
  • 《芳馨金玲》 (圖文:阿翁) 2017年6月29日清晨,兼有旗袍佳麗和拉丁舞隊(duì)員雙重身份的美女吳金玲,參加...
    羲都魅影閱讀 636評(píng)論 0 0

友情鏈接更多精彩內(nèi)容