成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#建造者模式如何使用

這篇“C#建造者模式如何使用”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C#建造者模式如何使用”文章吧。

站在用戶的角度思考問題,與客戶深入溝通,找到左云網(wǎng)站設(shè)計(jì)與左云網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋左云地區(qū)。

    前言

    建造者模式(Builder Pattern)使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。

    建造者模式結(jié)構(gòu)

    主要由四個核心角色組建而成分別為

    • 生成器(Builder):抽象產(chǎn)品生產(chǎn)步驟的方法。

    • 具體生成器(Concrete Builders):產(chǎn)品生產(chǎn)步驟方法的不同的具體實(shí)現(xiàn)。

    • 產(chǎn)品(Products):最終生成的對象。

    • 主管:(Director) 類定義調(diào)用構(gòu)造步驟的順序, 這樣你就可以創(chuàng)建和復(fù)用特定的產(chǎn)品配置。

    實(shí)例

    使用建造者模式的時候,我們應(yīng)該先問問為什么要使用它?使用它能給我們帶來什么?當(dāng)你考慮足夠了,使用起來才會更加順暢。下面會講解一些實(shí)例來代入我是如何理解的,也希望能幫助大家更好的理解建造者模式!

    電腦在我們?nèi)粘I钪惺欠浅3R姷模暮诵慕M成是什么呢?CPU、主板、電源、內(nèi)存、硬盤等等,那么客戶端需要我們構(gòu)造出來一臺電腦,我們應(yīng)該如何實(shí)現(xiàn)呢?

    static void Main(string[] args)
    {
        Computer computer = new Computer();
        computer.SetCpu("cpu");
        computer.SetMainboard("主板");
        computer.SetPowerSupply("電源");
        computer.SetGraphicsCard("集成顯卡");
        computer.GetComputerInfo();
        Console.ReadLine();
    }
    public class Computer 
    {
        private string _cpu;
        private string _mainboard;
        private string _powerSupply;
        private string _graphicsCard;
        public void SetCpu(string cup) 
        {
            _cpu = cup;
        }
        public void SetMainboard(string mainboard)
        {
            _mainboard = mainboard;
        }
        public void SetPowerSupply(string powerSupply)
        {
            _powerSupply = powerSupply;
        }
        public void SetGraphicsCard(string graphicsCard)
        {
            _graphicsCard = graphicsCard;
        }
        public void GetComputerInfo() 
        {
            Console.WriteLine($"電腦配置為Cpu:{_cpu},主板為:{_mainboard},電源為:{_powerSupply},顯卡為:{_graphicsCard}");
        }
    }

    大家都知道電腦有固態(tài)硬盤和機(jī)械硬盤之分,當(dāng)然需求也各異,畢竟現(xiàn)在顯卡偏貴,有大多數(shù)人選擇機(jī)械硬盤,有些愛玩游戲的就需要固態(tài)硬盤,針對需求我們在構(gòu)建電腦過程也會產(chǎn)生差異。

    對于用戶來說他只需要知道他要的東西(如帶固態(tài)硬盤電腦或者機(jī)械硬盤電腦),至于你的構(gòu)建過程用戶也不會太在乎。

    在上述例子中客戶需要手動去Set,如果需要Set的值過多,可能會導(dǎo)致用戶一些關(guān)鍵屬性少賦值,并且順序也是由用戶控制的,在某些環(huán)節(jié)出現(xiàn)問題,就會導(dǎo)致電腦組裝不起來。

    針對上述問題,我們可以很容易的代入建造者模式,它能將一個復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示!

    使用建造者模式

    通過上面一些表述,在構(gòu)建產(chǎn)品過程中是穩(wěn)定的,而具體的構(gòu)造細(xì)節(jié)是不一樣的有的需要固態(tài)硬盤,有的要機(jī)械硬盤等,那我們?nèi)绾问褂媒ㄔ煺吣J侥兀?/p>

    // 建造者核心角色生成器
    public interface IComputerBuilder
    {
        void SetCpu(string cup);
        void SetMainboard(string mainboard);
        void SetPowerSupply(string powerSupply);
        void SetIsGraphicsCard(string graphicsCard);
    }
    // A電腦具體生成器(固態(tài)硬盤電腦)
    public class AComputerBuilder : IComputerBuilder
    {
        private Computer Computer;
        public AComputerBuilder() 
        {
            Computer = new Computer();
        }
        public Computer GetComputer()
        {
           return Computer;
        }
        public void SetCpu() => Computer.Cpu = "CPU";
        public void SetHardDisk() => Computer.HardDisk = "固態(tài)硬盤";
        public void SetMainboard() => Computer.Mainboard = "主板";
        public void SetPowerSupply() => Computer.PowerSupply = "電源";
    }
    // A電腦具體生成器(機(jī)械硬盤電腦)
    public class BComputerBuilder : IComputerBuilder
    {
        private Computer Computer;
        public BComputerBuilder()
        {
            Computer = new Computer();
        }
        public Computer GetComputer()
        {
            return Computer;
        }
        public void SetCpu() => Computer.Cpu = "CPU";
        public void SetHardDisk() => Computer.HardDisk = "機(jī)械硬盤";
        public void SetMainboard() => Computer.Mainboard = "主板";
        public void SetPowerSupply() => Computer.PowerSupply = "電源";
    }
    • 通過了解建造者模式結(jié)構(gòu),我們需要引入主管(Director)概念類定義調(diào)用構(gòu)造步驟的順序。

    public class Director 
    {
        private IComputerBuilder ComputerBuilder;
        //客戶端代碼會創(chuàng)建生成器對象并將其傳遞給主管,然后執(zhí)行構(gòu)造過程。
        public Director(IComputerBuilder _ComputerBuilder) 
        {
            ComputerBuilder = _ComputerBuilder;
        }
        public Computer Build() 
        {
            ComputerBuilder.SetCpu();
            ComputerBuilder.SetMainboard();
            ComputerBuilder.SetPowerSupply();
            ComputerBuilder.SetHardDisk();
            return ComputerBuilder.GetComputer();
        }
    }
    • 執(zhí)行結(jié)果

    C#建造者模式如何使用

    以上就是關(guān)于“C#建造者模式如何使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

    網(wǎng)站名稱:C#建造者模式如何使用
    URL地址:http://jinyejixie.com/article24/jjipje.html

    成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)頁設(shè)計(jì)公司虛擬主機(jī)、微信公眾號、建站公司

    廣告

    聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

    網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
    崇礼县| 全南县| 安阳县| 夏津县| 太白县| 安溪县| 汤阴县| 婺源县| 长沙市| 田东县| 镇平县| 婺源县| 博兴县| 额尔古纳市| 台前县| 龙游县| 清徐县| 凤山县| 南通市| 扎囊县| 遂平县| 洪洞县| 岐山县| 芜湖县| 武宣县| 桃园市| 宁乡县| 裕民县| 清流县| 县级市| 麟游县| 西盟| 平远县| 陇南市| 郎溪县| 乐业县| 河西区| 修文县| 清涧县| 汉源县| 西充县|