国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原型模式-設計模式

jubincn / 1013人閱讀

摘要:原型模型通過拷貝創建對象,也可歸結為的創建型的設計模式。原型模式的示例實現接口調用父類的方法進行拷貝。實現深拷貝這種方式是先分配內存大小,然后通過內存塊的復制操作來實現賦值的,效率可能會比出來一個對象的效率高點。

原型模型通過拷貝創建對象,也可歸結為的創建型的設計模式。

原型模式的示例:

public class Prototype {

    public static void main(String[] args) {
        Field field = new Field("code");
        System.out.println("field=[" + field + "]");
        field.setCode("codedes");
        Field fieldCopy = field.clone();
        System.out.println("fieldCopy=[" + fieldCopy + "]");
    }
}

class Field implements Cloneable {

    private String code;

    public Field(String code) {
        this.code = code;
    }
    
    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String toString() {
        return "Field{" +
                "code="" + code + """ +
                "}";
    }

    public Field clone() {

        Field field = null;
        try {
            field = (Field) super.clone();

        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
        return field;
    }
}

1、實現Cloneable接口
2、調用object父類的clone方法進行拷貝。這里的拷貝是淺拷貝。

實現深拷貝:

public class Prototype {

    public static void main(String[] args) {
        Field field = new Field("code", new Type("string"));
        System.out.println("field=[" + field + "]");
        field.setCode("codedes");
        Field fieldCopy = field.clone();
        System.out.println("fieldCopy=[" + fieldCopy + "]");
    }
}

class Type implements Cloneable {
    private String typeName;

    public Type(String typeName) {
        this.typeName = typeName;
    }

    public Type clone(){
        Type type = null;
        try {
            type = (Type) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return type;
    }
}

class Field implements Cloneable {

    private String code;

    private Type type;

    public Field(String code, Type type) {
        this.code = code;
        this.type = type;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String toString() {
        return "Field{" +
                "code="" + code + """ +
                ", type=" + type +
                "}";
    }

    public Field clone() {

        Field field = null;
        try {
            field = (Field) super.clone();
            field.type = type.clone();

        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return field;
    }
}

clone這種方式是先分配內存大小,然后通過內存塊的復制操作來實現賦值的,效率可能會比new出來一個對象的效率高點。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66707.html

相關文章

  • 理解JavaScript的核心知識點:原型

    摘要:首先,需要來理清一些基礎的計算機編程概念編程哲學與設計模式計算機編程理念源自于對現實抽象的哲學思考,面向對象編程是其一種思維方式,與它并駕齊驅的是另外兩種思路過程式和函數式編程。 JavaScript 中的原型機制一直以來都被眾多開發者(包括本人)低估甚至忽視了,這是因為絕大多數人沒有想要深刻理解這個機制的內涵,以及越來越多的開發者缺乏計算機編程相關的基礎知識。對于這樣的開發者來說 J...

    iKcamp 評論0 收藏0
  • JS函數的工廠模式、構造函數模式原型模式的區別

    摘要:于是就有了構造函數和原型模式混合模式組合使用構造函數模式和原型模式創建自定義類型最常見的方式,就是組合模式。 創建對象 JS有六種數據數據類型,其中五種屬于基本數據類型:Null、Boolean、undefined、String、Number。而其它值都是對象。數組是對象,函數是對象,正則表達式是對象。對象也是對象。 來看一下對象的定義: 無序屬性的集合,其屬性可以包含基本值、對象、或...

    william 評論0 收藏0
  • 理解js對象

    摘要:將構造函數的作用域賦值給新對象因此指向了新對象執行構造函數的代碼為這個新對象添加屬性返回對象最初是用來標識對象類型的。但提到檢測對象類型,還是使用將構造函數當作函數構造函數與其他函數唯一區別。 創建對象 雖然Object構造函數與對象字面量都能創建單個對象, 但這些方式都有明顯的缺點: 使用同一個接口創建很多對象, 會產生大量重復代碼。 var obj = {}; //對象字面量 va...

    zhouzhou 評論0 收藏0
  • JS 原型模式

    摘要:你可以使用像下面這樣的代碼為上面的例子來實現車輛模具是福特總結原型模式在里的使用簡直是無處不在,其它很多模式有很多也是基于的,這里大家要注意的依然是淺拷貝和深拷貝的問題,免得出現引用問題。 1. 簡介 原型模式(Prototype pattern),用原型實例指向創建對象的類,使用于創建新的對象的類的共享原型的屬性與方法。 2. 實現 對于原型模式,我們可以利用JavaScript特有...

    Coding01 評論0 收藏0
  • 讀《javaScript高級程序設計-第6章》之封裝類

    摘要:創建構造函數后,其原型對象默認只會取得屬性至于其他的方法都是從繼承來的。上圖展示了構造函數的原型對象和現有的兩個實例之間的關系。所有原生的引用類型都在其構造函數的原型上定義了方法。 第6章我一共寫了3篇總結,下面是相關鏈接:讀《javaScript高級程序設計-第6章》之理解對象讀《javaScript高級程序設計-第6章》之繼承 工廠模式 所謂的工廠模式就是,把創建具體對象的過程抽象...

    seal_de 評論0 收藏0
  • JavaScript面向對象的程序設計

    摘要:目錄導語理解對象和面向對象的程序設計創建對象的方式的繼承機制原型對象原型鏈與原型對象相關的方法小結導語前面的系列文章,基本把的核心知識點的基本語法標準庫等章節講解完本章開始進入核心知識點的高級部分面向對象的程序設計,這一部分的內容將會對對象 目錄 導語 1.理解對象和面向對象的程序設計 2.創建對象的方式 3.JavaScript的繼承機制 3.1 原型對象 3.2 原型鏈 3.3 與...

    gitmilk 評論0 收藏0

發表評論

0條評論

jubincn

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<