成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android中常用的設計模式-建造者模式(Builder Pattern)

移動開發 Android
建造者模式(Builder Pattern)是一種創建型設計模式,也被稱為生成器模式。它將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

介紹

建造者模式(Builder Pattern)是一種創建型設計模式,也被稱為生成器模式。它將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

優缺點

優點:

  • 封裝性好,構建和表示分離。
  • 擴展性好,各個具體的建造者相互獨立,有利于系統的解耦。
  • 客戶端不必知道產品內部組成的細節,建造者可以對創建過程逐步細化,而不對其它模塊產生任何影響,便于控制細節風險。

缺點:

  • 產品的組成部分必須相同,這限制了其使用范圍。
  • 如果產品的內部變化復雜,如果產品內部發生變化,則建造者也要同步修改,后期維護成本較大。

結構

  • Builder:為創建一個產品對象的各個部件指定抽象接口。
  • ConcreteBuilder:實現Builder的接口以構造和裝配該產品的各個部件,定義并明確它所創建的表示,并提供一個檢索產品的接口。
  • Director:構造一個使用Builder接口的對象。
  • Product:表示被構造的復雜對象。ConcreteBuilder創建該產品的內部表示并定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的接口。

示例

public class Person {

    private String mPersonName;
    private int mPersonAge;
    private int mSex;
    private String mCardNumber;

    public Person Person(){
        return new Person(new Person.Builder());
    }

    public Person(Person.Builder builder){
        this.mCardNumber = builder.mCardNumber;
        this.mSex = builder.mSex;
        this.mPersonAge = builder.mPersonAge;
        this.mPersonName = builder.mPersonName;
    }

    public static final class Builder {
    
        private String mPersonName;
        private int mPersonAge;
        private int mSex;
        private String mCardNumber;

        public Builder(){}

        public Person build(){
            return new Person(this);
        }

        public Person.Builder setPersonName(String mPersonName) {
            this.mPersonName = mPersonName;
            return this;
        }

        public Person.Builder setPersonAge(int mPersonAge) {
            this.mPersonAge = mPersonAge;
            return this;
        }

        public Person.Builder setSex(int mSex) {
            this.mSex = mSex;
            return this;
        }

        public Person.Builder setCardNumber(String mCardNumber) {
            this.mCardNumber = mCardNumber;
            return this;
        }
    }
}



//使用Buidler構建Person對象
Person person = new Person.Builder()
    .setPersonName("張三")
    .setSex(1)
    .setPersonAge(30)
    .build();

建造者模式通過將復雜對象的構建過程分解為多個簡單的構建步驟,然后按照順序逐步構建,使得構建過程更加清晰和易于管理。同時,由于構建過程和表示被分離,因此可以創建不同的表示,從而提高了系統的靈活性和可擴展性。

在使用建造者模式時,需要仔細考慮產品的組成部分是否相同,以及產品的內部變化是否復雜,以避免在后期維護中產生不必要的麻煩。此外,還需要根據實際情況選擇合適的角色和實現方式,以達到最佳的設計效果。

責任編輯:趙寧寧 來源: 沐雨花飛蝶
相關推薦

2021-10-26 00:21:19

設計模式建造者

2020-10-20 13:33:00

建造者模式

2021-01-21 05:34:14

設計模式建造者

2021-04-14 09:02:22

模式 設計建造者

2011-07-14 14:46:46

設計模式

2021-12-01 07:38:27

設計模式規格模式Specificati

2013-11-26 17:09:57

Android設計模式

2021-10-27 17:57:35

設計模式場景

2021-06-10 19:09:05

模式代碼建造者

2021-05-11 08:54:59

建造者模式設計

2025-04-25 08:23:20

2019-08-16 10:46:46

JavaScript工廠模式抽象工廠模式

2021-11-29 09:38:12

設計模式對象池模式Object Pool

2020-11-05 09:38:07

中介者模式

2023-05-26 08:41:23

模式Go設計模式

2021-07-28 10:02:54

建造者模式代碼

2012-10-29 11:16:13

2024-07-31 10:41:16

C#設計模式

2012-08-27 10:52:20

.NET架構觀察者模式

2020-12-01 07:16:05

重學設計模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本 欧美 国产 | 中文精品视频 | 国产精品成人国产乱一区 | 国产精品久久久久无码av | 特级特黄特色的免费大片 | 超碰97在线免费 | 色综久久 | 国产日韩欧美一区 | 久草青青草 | 久久精品aaa | 又黄又爽的网站 | 国产精品毛片无码 | 国产91丝袜在线播放 | 欧美第一区 | 亚洲国产成人av好男人在线观看 | 中文精品视频 | 请别相信他免费喜剧电影在线观看 | 成人午夜精品 | 欧美综合一区二区 | 国产激情91久久精品导航 | 国产精品亚洲综合 | 国产成人精品久久二区二区91 | 成人一区二区三区在线观看 | 不卡在线视频 | 国产乱码精品一区二区三区五月婷 | 久久久久久久久中文字幕 | 国产精品一区二区福利视频 | 久久国产一区二区三区 | 亚洲综合免费 | 羞羞视频网页 | 中文字幕一区二区三区四区 | 日本国产一区二区 | 欧美成视频 | 国产夜恋视频在线观看 | 成人欧美一区二区三区在线播放 | 亚洲精品成人免费 | 综合久久av | 亚洲播放 | 国产午夜精品视频 | 欧美日韩中文在线 | 亭亭五月激情 |