栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

设计模式-汉堡套餐组合-建造者模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式-汉堡套餐组合-建造者模式

建造者模式的使用场景
  1. 相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。

  2. 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可 以使用该模式。

  3. 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建 造者模式非常合适。

  其实到了这里我们大体的了解到了我们建造者模式的两个核心点就是一个是固定的组件(对象),还有就是可以灵活的进行顺序组装我们的组件,满足客户端Client的需要。

建造者模式的含义

  建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:

  Separate the construction of a complex object from its representation so that the same construction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)

场景案例

  我们要实现的案例是编写一个套餐类,套餐中的组件为汉堡、可乐、薯条,我们要实现能够灵活的创建各种套餐,例如汉堡+薯条、汉堡+可乐、汉堡+薯条+可乐等。下图为应用到设计的建造者模式的类图:

代码实现

FoodPackage.java
@Data
public class FoodPackage {

    
    private String fries;

    
    private String cola;

    
    private String hamburg;

    public FoodPackage(FoodBuilder foodBuilder) {
        this.fries = foodBuilder.fries;
        this.cola = foodBuilder.cola;
        this.hamburg = foodBuilder.hamburg;
    }

    public static class FoodBuilder {
        
        private String fries;

        
        private String cola;

        
        private String hamburg;

        public FoodBuilder(String hamburg) {
            this.hamburg = hamburg;
        }

        public FoodBuilder setCola(String cola) {
            this.cola = cola;
            return this;
        }

        public FoodBuilder setFries(String fries) {
            this.fries = fries;
            return this;
        }

        public FoodPackage build() {
            return new FoodPackage(this);
        }
    }
}
Client.java
public class Client {
    public static void main(String[] args) {
        // 套餐1 牛肉汉堡+可乐
        new FoodPackage.FoodBuilder("牛肉汉堡").setCola("可乐").build();
        // 套餐2 牛肉汉堡+薯条
        new FoodPackage.FoodBuilder("牛肉汉堡").setCola("可乐").build();
        // 套餐3 牛肉汉堡+可乐+薯条
        new FoodPackage.FoodBuilder("牛肉汉堡").setCola("可乐").setFries("薯条").build();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号