Java设计模式-生成器模式

这篇具有很好参考价值的文章主要介绍了Java设计模式-生成器模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

今天接到一个需求,是对 订单做一些监控。比如有提货监控、送货监控、出库监控。每一种类型的监控,都有很多相应的 字段需要去填充 相应的值

Java设计模式:将一个复杂对象的构建与它的 表示分离,使用同样的构建可以创建不同的表示。

适合该模式的情景:对象结构复杂,利用单纯的构造方法无法满足描述该对象的需求,对象创建过程独立于创建该对象的类。

    public static class Order {
    
        private Method1 method1;

        private Method2 method2;

        private Method3 method3;
    }

比如创建上面这个 Order 对象,需要经历 method1、method2、method3 三个方法,已经方法内部的逻辑,这种对象的创建就比较符合用 设计模式-生成器模式 去做

生成器模式

生成器模式也成为建造者模式,生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。在软件设计中,有时候面临一个非常复杂的对象的创建工作。这个发杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同并且可能面临变化。

实现步骤

(1). 定义一个生成器接口,里面分别是去构建 Order 类三个属性的方法。

public interface IControlBuild<T> {
    public void buildMethod1();
    public void buildMethod2();
    public void buildMethod3();
    //混合三个方法的构建,返回 Order 对象
    public T composite();
}

(2).定义一个生成器类:
如果以后有针对其他的监控,也可以实现 IControlBuild 接口就行。

public class OrderGenerator implements IControlBuild<Order> {
    //order是成员变量
    Order order= new Order();
   
    @Override
    public void buildMethod1(){
    // build order by buildMethod1
    }
    @Override
    public void buildMethod2(){
    //你的逻辑
     // build order by buildMethod1
    }
    @Override
    public void buildMethod3(){
    //你的逻辑
     // build order by buildMethod1
    }
    //混合三个方法的构建,返回 Order 对象
    public Order composite(){
    //你的逻辑
    }
}

composite 方法是用泛型,只是为了提高扩展性,以后可能还有别的其他的监控对象需要被构建,就可以这样

public class Other1Generator implements IControlBuild<Other1> {
    //order是成员变量
    Other1 other1= new Other1();
   
    @Override
    public void buildMethod1(){
    // build other1 by buildMethod1
    }
    @Override
    public void buildMethod2(){
    //你的逻辑
     // build other1 by buildMethod1
    }
    @Override
    public void buildMethod3(){
    //你的逻辑
     // build other1 by buildMethod1
    }
    //混合三个方法的构建,返回 Order 对象
    public Other1 composite(){
    //你的逻辑
    }
}

(3).最后定义一个调度类,统一把 IControlBuild 接口的方法都调用起来。当然如果没有定义这个统一的调度类,那么你就需要在构建对象的时候,逐一去调用 IControlBuild 三个构建方法,但不建议这么去做文章来源地址https://www.toymoban.com/news/detail-495831.html


public class ControlHandler<T> {

    private final IControlBuild<T> build;

    public ControlHandler(IControlBuild<T> build) {
        this.build = build;
    }

    //这个指挥类有一个build方法,在该方法中调用 接口的所有方法 生成
    public T build() {
        build.buildMethod1();
        build.buildMethod2();
        build.buildMethod3();
     
        return build.composite();
    }

//写个main方法简单测试一下
 public static void main(String[] args) {
        IControlBuild build = new OrderGenerator<Order>();
        ControlHandler<Order> handler= new ControlHandler(build);
        Order order = handler.build();
        System.out.println(order);
    }

}

到了这里,关于Java设计模式-生成器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java设计模式-前言

     馆长准备了很多学习资料,其中包含 java方面,jvm调优,spring / spring boot /spring cloud ,微服务,分布式,前端,js书籍资料,视频资料,以及各类常用软件工具,破解工具  等资源。请关注“IT技术馆”公众号,进行关注,馆长会每天更新资源和更新技术文章等。请大家多多关

    2024年01月21日
    浏览(41)
  • 建造者模式(生成器模式)

    依赖倒转原则 = 抽象不应该依赖细节,细节应该依赖于抽象 对流程进行抽象,流程中具体细节依赖于这个抽象 过程是稳定的,细节是不同的 建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 建造者模式解析 Director:指挥者,是

    2024年04月15日
    浏览(36)
  • [go] 生成器模式

    生成器模式建议将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。 生成器 (Builder) 接口声明在所有类型生成器中通用的产品构造步骤。 具体生成器 (Concrete Builders) 提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品

    2024年01月24日
    浏览(42)
  • 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

    现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器

    2024年02月03日
    浏览(74)
  • Java-代码生成器的实现

    最近看了一个开源的项目, jfinal-layui ,然后这个项目里面有一个 代码生成器 的功能 之前虽然有用过代码生成器,但是从来没有看过相关的源码,所以就研究了一下,个人感觉这个项目的代码生成器还是蛮好的,能够根据指定的数据库和表生成前后端的代码,不过这个项目

    2024年02月02日
    浏览(63)
  • JAVA - PO DTO 生成器

    假设你是一个Java 高级程序员,我会提供一些信息,你需要帮我自动生成Java的PO、DTO 对象。 这些信息有着固定的形式,第一行是对象的类名,其后的每一行都是该对象的属性(简称“属性”)。 对于我属性,格式可能是小驼峰的形式,可能是全大写命名法的格式,我需要你自动

    2024年02月10日
    浏览(42)
  • 毕业设计——基于java+vue开发的在线教育平台,将开发PC、小程序、手机端,集成RABC权限+在线考试+文档预览+视频播放+代码生成器等功能

    完整项目地址:https://download.csdn.net/download/lijunhcn/88556337 本项目是基于java+vue开发的[在线教育平台],将开发PC、小程序、手机端,集成RABC权限+在线考试+文档预览+视频播放+代码生成器等功能。 版本控制:git 依赖管理:maven 接口文档:Swagger 权限验证:Spring Security 数据库:

    2024年02月03日
    浏览(76)
  • 『造轮子』亿级短URL生成器的架构设计及源码分享

    📣读完这篇文章里你能收获到 了解博主的短链生成的架构设计思路 学习不同的短链技术方案选择 学习基于混淆的自增短URL算法 了解博主造的轮子SuperShortLink短链开源项目 感谢点赞+收藏,避免下次找不到~ 短 URL 生成器,也称作 短链接生成器 ,就是将一个比较长的 URL 生成

    2024年02月03日
    浏览(88)
  • 拿来就用的Java海报生成器ImageCombiner(一)

    如果您是UI美工大师或者PS大牛,那本文一定不适合你;如果当您需要自己做一张海报时,可以立马有小伙伴帮您实现,那本文大概率也不适合你。但是,如果你跟我一样,遇上到以下场景,最近公司上了不少传播方面的需求,需要合成各种营销图片。人事部和办公室的小伙伴

    2024年01月17日
    浏览(42)
  • 『架构实践』探索亿级短URL生成器的架构设计与源码分享

    📣读完这篇文章里你能收获到 了解博主的短链生成的架构设计思路 学习不同的短链技术方案选择 学习基于混淆的自增短URL算法 了解博主造的轮子SuperShortLink短链开源项目 感谢点赞+收藏,避免下次找不到~ 短 URL 生成器,也称作 短链接生成器 ,就是将一个比较长的 URL 生成

    2024年02月09日
    浏览(424)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包