首页 > 其他分享 >10.10

10.10

时间:2024-11-20 10:10:41浏览次数:1  
标签:builder product String void Product 10.10 public

构建者模式

下面是一个简单的Java代码展示示例,展示了构建者模型的现实:

// 产品类
class Product {
    private String part1;
    private String part2;
    private String part3;

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    public void setPart3(String part3) {
        this.part3 = part3;
    }

    public void show() {
        System.out.println("Product Parts:");
        System.out.println("Part 1: " + part1);
        System.out.println("Part 2: " + part2);
        System.out.println("Part 3: " + part3);
    }
}

// 抽象建造者类
abstract class Builder {
    protected Product product;

    public Builder() {
        product = new Product();
    }

    public abstract void buildPart1();

    public abstract void buildPart2();

    public abstract void buildPart3();

    public Product getProduct() {
        return product;
    }
}

// 具体建造者类
class ConcreteBuilder extends Builder {
    @Override
    public void buildPart1() {
        product.setPart1("Part 1");
    }

    @Override
    public void buildPart2() {
        product.setPart2("Part 2");
    }

    @Override
    public void buildPart3() {
        product.setPart3("Part 3");
    }
}

// 指挥者类
class Director {
    private Builder builder;

    public void setBuilder(Builder builder) {
        this.builder = builder;
    }

    public Product construct() {
        builder.buildPart1();
        builder.buildPart2();
        builder.buildPart3();
        return builder.getProduct();
    }
}

// 客户端代码
public class BuilderPatternExample {
    public static void main(String[] args) {
        Director director = new Director();
        Builder builder = new ConcreteBuilder();
        director.setBuilder(builder);

        Product product = director.construct();
        product.show();
    }
}

在上面的例子中,我们首先确定了产品类Product,它具有三个部分。然后,我们确定了抽像创建者类Builder,其中包含了创新产品的抽象方法。

接下来,我们发现了实体创建者类ConcreteBuilder,它继承自抽像创建者类。在实体构建者类中,我们发现了抽像方法,路径构造产品的各个部分。

然后,我们确定了指南者类Director,它负责组织构建者的工作流程。通过调用构建者的方法,按照特定的顺序结构产品,并返回最终的产品实例。

最后,在客户端代码中,我们创建了指南者对象和实体建造者对象,并将工具实体建造者对象传递给指南者。然后来,通过调用指南者的方法,我们开始构建产品。最后,我们通过construct()调用产品的show()方法,展示最终构造的产品。

构建者模型的关键点是将产品的构建过程与其表示分离开来,使相同的构建过程可以创建

不同的表现。通过建造者模式,我们可以以更灵动的地方建造复杂的对比,同时将建造过程序封装起来,使客户终端代号与实体结构过程序解劳。

标签:builder,product,String,void,Product,10.10,public
From: https://www.cnblogs.com/luoqingci/p/18556246

相关文章

  • 极狐GitLab 发布安全版本16.10.10, 16.9.11, 16.8.10, 16.7.10, 16.6.10, 16.5.10, 16
    近期,极狐GitLab针对16.x版本正式推出安全版本16.10.10,16.9.11,16.8.10,16.7.10,16.6.10,16.5.10,16.4.7,16.3.9,16.2.11,16.1.8,16.0.10,用来减缓安全漏洞CVE-2024-45409带来的安全风险。极狐GitLab正式推出针对GitLabCE老旧版本免费用户的GitLab专业升级服......
  • 2024.010.10
    今天主要是记录一些问题,主要是在使用vue通过axios发送请求的时候,起初我认为需要把vue和springboot整合到一块但是在听完课之后发现并不需要,因为vue的目的是实现前后端分离的开发,因此两个项目可以同时运行,调整vue项目就是改前端代码,调整springboot就是改后端代码,前端只负责发送请......
  • 10.10
    1.假设有一个二分类的数据集,共含有100个样本,其中正例和负例的比例是1:1,使用某分类模型采用五折交叉验证实验三次,子集与原数据集独立同分布,结果如下。表1.五折交叉验证正例分类结果统计D1为测试集D2为测试集D3为测试集D4为测试集D5为测试集第一次9/2     ......
  • KubeSphere 社区双周报|2024.09.27-10.10
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.09.27-10.10。贡献者名单新晋KubeSpherecontribut......
  • 2024.10.10
    Static当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率,如:Math.sqrt()静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员(必须遵守访问权限)注意这个的意思是静态方法不可以使用this访问本类的成员,但可以在静态方法内创建本......
  • 10.10 总结
    T1美丽的子区间还行吧,根据大眼观察法可以看出当\(x\)为使用科技的次数时,函数\(f(x)\)等于使用\(x\)次科技的最小答案是一个单谷函数,可以三分,注意到使用\(x\)次科技的时候的第\(i\)个数的答案是\(\min\limits_{j=\min(1,i-x+1)}^{i}\)。而且还要加上一个小贪心:把最......
  • 剪映最新免VIP版,免费激活解锁所有VIP功能,打开即用!(2024.10.10)
    剪映免VIP版本https://pan.quark.cn/s/7a4affd0ef9b剪映是由字节跳动公司开发的一款全能易用的桌面端剪辑软件。这款软件最初是为满足手机用户的视频编辑需求而设计的,特别适合制作短视频和社交媒体内容。剪映的优势正是集中于「专业」、「创意」、「协同」三大功能上,可以......
  • 10.10日noip多校联考总结
    10.10日noip多校联考总结T1感觉就是个dij再多记录一个换乘次数然后就像普通dij一样跑就行了。但是必须得将换乘次数放进dis数组中当成一个状态记录下来,不能只记录在堆中,不然做法会假。T2发现m=0的部分分就是用一个数据结构维护区间最大子段和。m=1/2就是同时维护一个最大值......
  • 10.10学习笔记
    事件概率1.事件事件是指在某个试验或观察中可能发生的结果或结果的集合。是样本空间的一个子集,可以包含一个或多个样本点,也可以是整个样本空间。事件用大写字母,如A,B,C等表示。1.1概念1.1.1基本事件基本事件是指试验中不可再分的最简单的事件。每个基本事件代表一个单一......
  • 10.10 爆零赛(2023 炼石计划 NOIP 模拟赛 #2)
    炼石计划9月10日NOIP模拟赛#2【补题】-比赛-梦熊联盟(mna.wang)模拟赛恒等式:\(0+0+0+0=0\)。复盘T1好像可做。有个显然的\(n^2\)DP。推式子的时候猜到了\(\gcd=1\)的做法。进一步尝试正解未果。T2一眼只会爆搜。想到了\(b\timesb!\)的做法,应该能过\(......