首页 > 其他分享 >设计模式-构造器模式

设计模式-构造器模式

时间:2022-10-06 12:11:53浏览次数:37  
标签:逻辑 这个 复杂 然后 模式 构造 设计模式

封装复杂对象的构造逻辑,那么这讲的话呢,实际上是这个builder模式,这个构造器模式就是builder,ok,那么这个builder模式所要实现的是一个什么场景呢,就是,是这样的,比如说我们现在要构造一个复杂的一个对象,然后这个对象呢,就是很多的这个属性,然后有些属性构造的时候,需要做一些校验啊,然后比如说一些格式转换啊,等等,然后就是说它会有一些逻辑么,对吧。大概就是这样的这么一个场景。

然后,这个场景呢,是这样子啊,我们来看一下这边,这应该是builder对吧。我们先来做 一个没有用模式的场景,WithoutBuilderPatternDemo,比如说,我们现在不用模式,那可能就是这样子,我给大家举个例子啊,我这边有一个public static class Product这个类,我假设它是很复杂的这么一个对象啊,然后它有3个,filed1,filed2,filed3,ok,然后它是有一堆的这个get、set对吧,好,然后的话,我们现在来开始构造这个复杂的这个Product对象,比如说我们可能会这样的来做,Product product = new Product();,设置field1属性,然后我们这边可能要,你看,我只是给大家举个例子,在设置field1之前进行较为复杂的这个校验逻辑。System.out.println("在设置field1之前进行较为复杂的校验逻辑");,接下来product.setField1("值1");,然后,设置field2属性,然后这个System.out.println("在设置field2之前进行复杂的数据格式转换逻辑");然后,product.setField2("值2");,然后这便是设置field3属性,System.out.println("在设置field3之前进行复杂的数据处理逻辑,跟其他对象的数据进行关联");,比如说干了这么一个事情,然后product.setField3("值3");。

好,那么它这里的话,可能就是会变成这样子,就是构造成一个复杂的对象么,每构造一个Filed,可能都会在这之前有一些逻辑吗,对吧,然后最后啊,其实上面是一个简化的这么一个逻辑啊,实际上,对于一些,有几十个字段,甚至上百个字段的复杂对象的构建,上面那段代码会极度膨胀,非常那个复杂,那这个有一个坏处啊,一个是说,大量代码堆积在一起,然后那个维护性非常差,可读性非常差,就是一坨代码,到最后跟屎一样,就是读不懂,没法改,可能这个代码,它就是这样子,那另外一个,这段逻辑它如果是在那个多个地方都有使用的话,那么一旦这段逻辑出现了一些变化,那么可能就需要在多个地方修改这一坨跟屎一样的代码。对吧,那当然 了,其实你可以把所谓的这个构造的过程,拿到一个工厂里面去,但是在这个工厂里面,它其实也是一样的啊,你在这个工厂里面,它可能会混杂着大量的代码,当然你说,我可以把这个,不同的这个构造的步骤抽取成某一个这个方法,当然你可以这么去做,但是这样做的话,实际上来说就是,你还是没有用一个,就是这个构造器模式啊,它其实体现的是说你的,整个这个比较复杂的一个构建逻辑吗,对吧,然后它可能需要有很多的逻辑去构建,然后,它体现的并不是说把,就是你可以把一大堆很复杂的这个逻辑放在一个工厂里面去,在这个工厂把多个步骤给抽成不同的方法,你也可以这么去做,但是那样的话,同样会导致,就是那样的话同样会有一个问题啊,什么问题啊,我一会给大家说,我还是先把整个这个构造器模式代码给大家写一遍,然后来看一看,欧克。

然后这边的话,BuilderPatternDemo,给大家看看,如果采用构造器模式,大概看起来,应该是什么样子的。

 

 

 

 

 

 

 

end

标签:逻辑,这个,复杂,然后,模式,构造,设计模式
From: https://www.cnblogs.com/HarryVan/p/16757370.html

相关文章

  • Red Hat Enterprise Linux release 8.0 (Ootpa)-进入单用户模式重新设置root密码
    RedHatEnterpriseLinuxrelease8.0使用单用户模式有一个前提,即系统引导器(GRUB)能正常工作;否则,就要使用修复模式进行系统维护。需要注意的是,进入单用户模式后,如果没有开......
  • 设计模式之责任链模式
    责任链模式概念ChainofResponsibility isabehavioraldesignpatternthatletsyoupassrequestsalongachainofhandlers.Uponreceivingarequest,each......
  • 设计模式之命令模式
    命令模式概念Command isabehavioraldesignpatternthatturnsarequestintoastand-aloneobjectthatcontainsallinformationabouttherequest.Thistra......
  • 5-互评-OO之接口-DAO模式代码阅读及应用
    DAO模式是接口的一个典型应用。阅读附件中的参考代码,并回答以下问题:StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?StudenDaoListImpl.java采用List存......
  • 分组密码的基本的工作模式、优缺点
    1、电子密码本ECB(Electroniccodebook)需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密。适用于数据较少的情况,比如加密秘钥。优点:简单、快速、......
  • 设计模式-外观模式
    将多个内部模块的调用封装在一个类中。这个外观模式的化,它是facade模式,这个是它的一个英文名啊,那我们这边的话呢,还是一样啊,上来给大家举一个场景吧,这个场景啊,假设我们现在......
  • 一篇文章让你彻底理解Java的单例设计模式
    下文是笔者编写的单例模式实现的八种方式,如下所示:单例模式的简介我们将一个类在当前进程中只有一个实例的这种模式,称之为“单例模式”那么Java代码如何实现一个单例模式呢?......
  • JAVA设计模式-装饰模式
    JAVA设计模式-装饰模式介绍装饰模式是一种结构型模式,在不改变现有对象结构的前提下,给现有对象添加新的功能,动态增加职责,是现有类的一个包装。角色Component:定义一......
  • Rust从入门到精通09-模式解构
    "PatternDestructure"是Rust中一个重要且实用的设计。通常翻译为“模式解构”。Destructure单词翻译为把原来的结构肢解为单独的、原始的部分。下面我们举例说明什么......
  • 【分享】从Mybatis源码中,学习到的10种设计模式
    作者:小傅哥​沉淀、分享、成长,让自己和他人都能有所收获!......