自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

移動(dòng)開(kāi)發(fā) Android
建造者模式(Builder Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,也被稱(chēng)為生成器模式。它將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

介紹

建造者模式(Builder Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,也被稱(chēng)為生成器模式。它將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 封裝性好,構(gòu)建和表示分離。
  • 擴(kuò)展性好,各個(gè)具體的建造者相互獨(dú)立,有利于系統(tǒng)的解耦。
  • 客戶(hù)端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),建造者可以對(duì)創(chuàng)建過(guò)程逐步細(xì)化,而不對(duì)其它模塊產(chǎn)生任何影響,便于控制細(xì)節(jié)風(fēng)險(xiǎn)。

缺點(diǎn):

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

結(jié)構(gòu)

  • Builder:為創(chuàng)建一個(gè)產(chǎn)品對(duì)象的各個(gè)部件指定抽象接口。
  • ConcreteBuilder:實(shí)現(xiàn)Builder的接口以構(gòu)造和裝配該產(chǎn)品的各個(gè)部件,定義并明確它所創(chuàng)建的表示,并提供一個(gè)檢索產(chǎn)品的接口。
  • Director:構(gòu)造一個(gè)使用Builder接口的對(duì)象。
  • Product:表示被構(gòu)造的復(fù)雜對(duì)象。ConcreteBuilder創(chuàng)建該產(chǎn)品的內(nèi)部表示并定義它的裝配過(guò)程,包含定義組成部件的類(lèi),包括將這些部件裝配成最終產(chǎn)品的接口。

示例

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構(gòu)建Person對(duì)象
Person person = new Person.Builder()
    .setPersonName("張三")
    .setSex(1)
    .setPersonAge(30)
    .build();

建造者模式通過(guò)將復(fù)雜對(duì)象的構(gòu)建過(guò)程分解為多個(gè)簡(jiǎn)單的構(gòu)建步驟,然后按照順序逐步構(gòu)建,使得構(gòu)建過(guò)程更加清晰和易于管理。同時(shí),由于構(gòu)建過(guò)程和表示被分離,因此可以創(chuàng)建不同的表示,從而提高了系統(tǒng)的靈活性和可擴(kuò)展性。

在使用建造者模式時(shí),需要仔細(xì)考慮產(chǎn)品的組成部分是否相同,以及產(chǎn)品的內(nèi)部變化是否復(fù)雜,以避免在后期維護(hù)中產(chǎn)生不必要的麻煩。此外,還需要根據(jù)實(shí)際情況選擇合適的角色和實(shí)現(xiàn)方式,以達(dá)到最佳的設(shè)計(jì)效果。

責(zé)任編輯:趙寧寧 來(lái)源: 沐雨花飛蝶
相關(guān)推薦

2020-10-20 13:33:00

建造者模式

2021-10-26 00:21:19

設(shè)計(jì)模式建造者

2021-01-21 05:34:14

設(shè)計(jì)模式建造者

2021-04-14 09:02:22

模式 設(shè)計(jì)建造者

2011-07-14 14:46:46

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

2021-12-01 07:38:27

設(shè)計(jì)模式規(guī)格模式Specificati

2021-10-27 17:57:35

設(shè)計(jì)模式場(chǎng)景

2013-11-26 17:09:57

Android設(shè)計(jì)模式

2021-06-10 19:09:05

模式代碼建造者

2025-04-25 08:23:20

2021-05-11 08:54:59

建造者模式設(shè)計(jì)

2019-08-16 10:46:46

JavaScript工廠模式抽象工廠模式

2021-11-29 09:38:12

設(shè)計(jì)模式對(duì)象池模式Object Pool

2020-11-05 09:38:07

中介者模式

2021-07-28 10:02:54

建造者模式代碼

2024-07-31 10:41:16

C#設(shè)計(jì)模式

2023-05-26 08:41:23

模式Go設(shè)計(jì)模式

2012-10-29 11:16:13

2012-08-27 10:52:20

.NET架構(gòu)觀察者模式

2012-08-22 10:10:25

單態(tài)單態(tài)設(shè)計(jì)設(shè)計(jì)模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)