Matlab建造者模式(Builder)

25 篇文章 2 订阅
21 篇文章 1 订阅

创建者模式又叫建造者模式(Builder),是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。本文以创建计算机为例,使用Matlab语言来实现。

Computer.m (要构造的复杂对象)

classdef Computer < handle
    properties
        name = "";
        CPU = "";
        memory = "";
        disk = "";
    end 
    methods
        function set.name(obj,name)
            obj.name = name;
        end
        function name = get.name(obj)
            name = obj.name;
        end
        function set.CPU(obj,CPU)
            obj.CPU = CPU;
        end
        function CPU = get.CPU(obj)
            CPU = obj.CPU;
        end
        function set.memory(obj,memory)
            obj.memory = memory;
        end
        function memory = get.memory(obj)
            memory = obj.memory;
        end
        function set.disk(obj,disk)
            obj.disk = disk;
        end
        function disk = get.disk(obj)
            disk = obj.disk;
        end
        function showInfo(obj)
            disp("Computer:"+obj.name+"{CPU:"+obj.CPU+",memory:"+obj.memory+",disk:"+obj.disk+"}");
        end
    end
end

Builder.m (抽象的构造者)

classdef Builder < handle
    methods(Abstract)
        setName(~,~);
        setCPU(~,~);
        setMemory(~,~);
        setDisk(~,~);
        build(~);
    end
end

ConcreteBuilder.m (具体的构造者)

classdef ConcreteBuilder < Builder
    properties
        name = "";
        CPU = "";
        memory = "";
        disk = "";
    end
    methods
        function obj = setName(obj,name)
            obj.name = name;
        end
        function obj = setCPU(obj,CPU)
            obj.CPU = CPU;
        end
        function obj = setMemory(obj,memory)
            obj.memory = memory;
        end
        function obj = setDisk(obj,disk)
            obj.disk = disk;
        end
        function computer = build(obj)
            computer = Computer();
            computer.name = obj.name;
            computer.CPU = obj.CPU;
            computer.memory = obj.memory;
            computer.disk = obj.disk;
        end
    end
end

Director.m (指导者,负责调用构造对象的逻辑,控制相应的构造顺序)

classdef Director
    methods
        function computer = getComputer(~,builder)
           computer = builder.setName("dell")...
            .setCPU("intel i5")...
            .setMemory("4G")...
            .setDisk("1T")...
            .build();
        end             
    end
end

test.m

builder = ConcreteBuilder();
director = Director();
computer = director.getComputer(builder);
computer.showInfo();

结果展示:

参考资料:

https://blog.csdn.net/ITzhongzi/article/details/88556937

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值