ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

慢慢说设计模式:建造者模式

2021-09-03 20:58:42  阅读:135  来源: 互联网

标签:category 慢慢说 return String 建造 class Matter 设计模式 public


小Q:什么是设计模式

慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。


小Q:什么是建造者模式

慢慢:建造者模式的核心目的是通过多个简单对象一步一步地构造出一个复杂对象出来。例如我们装修房子,不仅需要考虑硬装部分,如地板,瓷砖,门框等,还需要考虑软装部分,如桌椅,沙发,家电等。如果我们只用一个对象去表示整个装修过程,这会让整个代码变得复杂,不易解耦。建造者模式也属于创建型模式。


小Q:理解了,赶快上代码!

慢慢:我们以装修为例,先创建一个材料接口。

public interface Matter {
    String category();  // 类别
    String brand();  // 品牌
    double price();  // 价格
}

瓷砖类:

// 1. 东鹏
public class DongPeng implements Matter {
    public category() {
        return "瓷砖";
    }
    
    public brand() {
        return "东鹏";
    }
    
    public price() {
        return 100L;
    }
}

-----
// 2. 马可波罗
public class MarcoPolo implements Matter {
    public String category() {
        return "瓷砖";
    }
    
    public String brand() {
        return "马克波罗";
    }
    
    public double price() {
        return 150L;
    }
}

地板类:

// 1. 德尔
public class Der implements Matter {
    public String category() {
        return "地板";
    }
    
    public String brand() {
        return "德尔";
    }
    
    public double price() {
        return 50L;
    }
}
----
// 2. 圣像
public class ShengXiang implements Matter {
    public String category() {
        return "地板";
    }
    
    public String brand() {
        return "圣像";
    }
    
    public double price() {
        return 30L;
    }
}

电视类:

// 1. 小米
public class XiaoMi implements Matter {
    public String category() {
        return "电视";
    }
    
    public String brand() {
        return "小米";
    }
    
    public double price() {
        return 3000L;
    }
}

---
// 2. 乐视
public class LeShi implements Matter {
    public String category() {
        return "电视";
    }
    
    public String brand() {
        return "乐视";
    }
    
    public double price() {
        return 2500L;
    }
}

装修清单

public class DecorationList {
    ArrayList<Matter> list = new ArrayList<>();  // 清单列表
    
    public DecorationList add(Matter matter) {
        list.add(matter);
        return this;
    }
}

使用测试:

public class Demo {
    public static void main(String[] args) {
        DecorationList decorationList = new DecorationList();
        decorationList.add(new Der())
            .add(new MarcoPolo())
            .add(new LeShi());  // 链式编程
    }
}

小Q:建造者模式好强大呀,它能应用在哪些地方呢

慢慢:当我们面临一个复杂对象的创建时,我们可以用到此模式,对各个部分的用子对象的方式剥离出来,再将它们组合成一起,从而时代码更加健壮和可用。

标签:category,慢慢说,return,String,建造,class,Matter,设计模式,public
来源: https://blog.csdn.net/qq_45378738/article/details/120090119

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有