设计模式——创建类型之建造者模式

设计模式——建造者模式

背景

本人从事开发工作也有多年,目前坐标湖南长沙,以前在各种平台也发过一些文章但是都没有坚持下来;
这个系列是要写设计模式的,将23大设计模式逐一用自己的理解加例子写出来。
其一、眨眼就到了而立之年,觉得自己记忆力也是下降久做过的东西总是记不起,果然是好记性不如烂笔头。
其二、这么多年白嫖了网上很多的文章,视频,一直觉得应该分享一些东西但总是沉不下心去做。
其三、可能写的不好至少也留下一些东西,也是希望能帮助到一些朋友。

说明

在我的理解里:每一种设计模式仅仅是一种思想,并不是说每个设计模式之间就会有很明确的边界。有时候你会觉得某两种设计模式实现起来特别像,其实是因为有些的设计模式延伸出来的仅仅是着重的看待点不一样而已;学习设计模式一定不是只学习固定的实现方式。要了解设计思想,然后在项目中灵活得进行最适合设计。

建造者模式

建造者模式:“由多个部分分别创建后组成构建成一个对象”
与链式调用的关系:没有任何关系!!!!!链式调用仅仅是一种编码风格,返回值是对象本身而已!!!

直接上一段实现代码

 /**
     * * @Description 房间装修报价
     * * @Version 1.0
     * * @Remark 比如房间里需要放很多东西,如:沙发,电视,茶几
     **/
    public  class HouseDecoration {
        String sofa;
        String tv;
        String tea;

        public String getSofa() {
            return sofa;
        }

        public void setSofa(String sofa) {
            this.sofa = sofa;
        }

        public String getTv() {
            return tv;
        }

        public void setTv(String tv) {
            this.tv = tv;
        }

        public String getTea() {
            return tea;
        }

        public void setTea(String tea) {
            this.tea = tea;
        }

        @Override
        public String toString() {
            return "HouseDecoration{" +
                    "sofa='" + sofa + '\'' +
                    ", tv='" + tv + '\'' +
                    ", tea='" + tea + '\'' +
                    '}';
        }
    }

    /**
     * * @Description 整体报价
     * * @Version 1.0
     * * @Remark 比如房间里需要放很多东西,如:沙发,电视,茶几
     **/
    public  abstract class WholeOffer {
        HouseDecoration houseDecoration = new HouseDecoration();

        public abstract void offSofa();

        public abstract void offTV();

        public abstract void offTea();

        //返回报价
        HouseDecoration getHouseDecoration() {
            return houseDecoration;
        }
    }

    public  class PTSWholeOffer extends WholeOffer {

        @Override
        public void offSofa() {
            houseDecoration.setSofa("沙发,3200");
        }

        @Override
        public void offTV() {
            houseDecoration.setTv("电视,6200");
        }

        @Override
        public void offTea() {
            houseDecoration.setTea("茶几,1200");
        }
    }

    public  class MJWholeOffer extends WholeOffer {

        @Override
        public void offSofa() {
            houseDecoration.setSofa("沙发,6200");
        }

        @Override
        public void offTV() {
            houseDecoration.setTv("电视,5200");
        }

        @Override
        public void offTea() {
            houseDecoration.setTea("茶几,2200");
        }
    }

    //管理建造者的报价
    public class HouseDecorationManager {
        private WholeOffer builder;

        public HouseDecorationManager(WholeOffer builder) {
            this.builder = builder;
        }

        //报价
        public HouseDecoration build() {
            builder.offSofa();
            builder.offTea();
            builder.offTV();
            return builder.getHouseDecoration();
        }
    }

调用示例

  		//建造者模式
        Log.d("菩提树报价:" + new HouseDecorationManager(new PTSWholeOffer()).build().toString());
        Log.d("名匠报价:" + new HouseDecorationManager(new MJWholeOffer()).build().toString());

链式调用实现构建者示例就不展示了,可以自己试着实现一下!提供的源码链接内也包含,有兴趣的可以查看。

建造者模式链接

建造者模式链接.

吐槽

没啥好吐槽的了…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值