中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#建造者模式如何使用

發布時間:2022-10-21 09:38:32 來源:億速云 閱讀:112 作者:iii 欄目:編程語言

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

    前言

    建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建成一個復雜的對象。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。

    建造者模式結構

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

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

    • 具體生成器(Concrete Builders):產品生產步驟方法的不同的具體實現。

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

    • 主管:(Director) 類定義調用構造步驟的順序, 這樣你就可以創建和復用特定的產品配置。

    實例

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

    電腦在我們日常生活中是非常常見的,它的核心組成是什么呢?CPU、主板、電源、內存、硬盤等等,那么客戶端需要我們構造出來一臺電腦,我們應該如何實現呢?

    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}");
        }
    }

    大家都知道電腦有固態硬盤和機械硬盤之分,當然需求也各異,畢竟現在顯卡偏貴,有大多數人選擇機械硬盤,有些愛玩游戲的就需要固態硬盤,針對需求我們在構建電腦過程也會產生差異。

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

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

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

    使用建造者模式

    通過上面一些表述,在構建產品過程中是穩定的,而具體的構造細節是不一樣的有的需要固態硬盤,有的要機械硬盤等,那我們如何使用建造者模式呢?

    // 建造者核心角色生成器
    public interface IComputerBuilder
    {
        void SetCpu(string cup);
        void SetMainboard(string mainboard);
        void SetPowerSupply(string powerSupply);
        void SetIsGraphicsCard(string graphicsCard);
    }
    // A電腦具體生成器(固態硬盤電腦)
    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 = "固態硬盤";
        public void SetMainboard() => Computer.Mainboard = "主板";
        public void SetPowerSupply() => Computer.PowerSupply = "電源";
    }
    // A電腦具體生成器(機械硬盤電腦)
    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 = "機械硬盤";
        public void SetMainboard() => Computer.Mainboard = "主板";
        public void SetPowerSupply() => Computer.PowerSupply = "電源";
    }
    • 通過了解建造者模式結構,我們需要引入主管(Director)概念類定義調用構造步驟的順序。

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

    C#建造者模式如何使用

    以上就是關于“C#建造者模式如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    衡东县| 南川市| 繁峙县| 桐城市| 泌阳县| 南安市| 巍山| 台北县| 会同县| 嘉善县| 神木县| 巴南区| 太仓市| 上思县| 长岭县| 杭锦旗| 冷水江市| 介休市| 闽侯县| 武胜县| 宁夏| 云林县| 宜兴市| 金溪县| 沂源县| 海丰县| 竹山县| 马鞍山市| 周口市| 漳州市| 玉山县| 镶黄旗| 塘沽区| 嵩明县| 越西县| 莱州市| 宝应县| 武威市| 始兴县| 郸城县| 班戈县|