美文网首页
建造者模式

建造者模式

作者: 祝你万事顺利 | 来源:发表于2019-05-13 20:24 被阅读0次

建造者模式

将复杂的对象的实现过程与表现形式进行分离。

此模式用于创建一些复杂的对象,内部建造顺序稳定,但是建造的内容有复杂的变化。此模式将建造代码与表示代码分离,建造者隐藏了产品的组装过程,通过不同的建造者定义不同的产品内部表示。

Builder.PNG
class Program
    {
        static void Main(string[] args)
        {
            Director director = new Director();
            Builder builder = new DellWorker();
            director.CreateComputer(builder);
            Computer computer = builder.GetComputer();
            computer.Show();
        }
    }
    class Computer
    {
        List<string> computerCom =new List<string>(); 
        public void Add(string com)
        {
            computerCom.Add(com);
        }
        public void Show()
        {
            foreach(var item in computerCom)
            {
                Console.WriteLine("Build : "+ item);
            }
        }
    }
    abstract class Builder
    {
        protected Computer computer = new Computer();
        public abstract void AddCPU();
        public abstract void AddGPU();
        public abstract void AddRAM();
        public abstract Computer GetComputer();
    }
    class DellWorker : Builder
    {
        public override void AddCPU()
        {
            computer.Add("INTELCPU");
        }

        public override void AddGPU()
        {
            computer.Add("NAVIDGPU");
        }

        public override void AddRAM()
        {
            computer.Add("CRAM");
        }

        public override Computer GetComputer()
        {
            return computer;
        }
    }
    class Director
    {
        
        public void CreateComputer(Builder builder)
        {
            builder.AddCPU();
            builder.AddGPU();
            builder.AddRAM();
        }
    }

Lua实现:

-- [[将复杂的对象的实现过程与表现形式进行分离。]]
Product = {}
function Product:new(o)
    o = o or {};
    setmetatable(o,self);
    self.__index = self;
    return o;
end
function Product:Show()
    print(self.unit);
end

Builder = {}
function Builder:new(o)
    o = o or {};
    setmetatable(o,self);
    self.__index = self;
    return o;
end 

ComputerBuilder = Builder:new();
function ComputerBuilder:new(o)
    o = o or {}
    setmetatable(o,self)
    o.product = Product:new();
    self.__index = self;
    return o;
end

function ComputerBuilder : AddCpu()
    if self.product.unit == nil then
        self.product.unit = "Computer :";
    end
    self.product.unit = self.product.unit .. "英特尔CPU9900k; ";
end
function ComputerBuilder : AddGpu()
    self.product.unit = self.product.unit .. "GPU2080TI; ";
end
function ComputerBuilder : AddRAM()
    self.product.unit = self.product.unit .. "RAM64G; ";
end

Director = {}
function Director:new(o)
    o = o or {};
    setmetatable(o,self);
    self.__index = self;
    return o;
end
function Director:Construct(builder)
    if builder ~= nil then
        builder:AddCpu();
        builder:AddGpu();
        builder:AddRAM();
        builder.product:Show();
    end
end

combuilder = ComputerBuilder : new();
comDirector = Director:new();
comDirector = Director:Construct(combuilder);

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/wycraqtx.html