当前位置: 首页 > news >正文

宁夏手机网站建设文化厅网站建设审核报告单

宁夏手机网站建设,文化厅网站建设审核报告单,徐州网络推广服务,邯郸信息港发布信息1、简介 1.1、概述 建造者模式又称为生成器模式#xff0c;它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式向客户端返回的不是一个简单的产品#xff0c;而是一个由多个部件组成的复杂产品。 建造者模式是较为复杂的创建型模式#xff0c;它将客户端与包…1、简介 1.1、概述 建造者模式又称为生成器模式它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式向客户端返回的不是一个简单的产品而是一个由多个部件组成的复杂产品。 建造者模式是较为复杂的创建型模式它将客户端与包含多个组成部分或部件的复杂对象的创建过程分离。客户端无须知道复杂对象的内部组成部分与装配方式只需要知道所需的建造者类型即可。建造者模式关注如何一步一步地创建一个复杂对象不同的具体建造者定义了不同的创建过程且具体建造者相互独立增加新的建造者非常方便无须修改已有代码系统具有较好的扩展性。 1.2、定义 将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 2、解析 2.1、UML类图示例 建造者模式一步一步地创建一个复杂的对象它允许用户只通过指定复杂对象的类型和内容就可以构建它们用户不需要知道内部的具体构建细节。建造者模式结构如下图所示 建造者模式结构中包含以下4个角色 1Builder抽象建造者它为创建一个产品Product对象的各个部件指定抽象接口。在该接口中一般声明两类方法一类方法是buildPartX用于创建复杂对象的各个部件另一类方法是getResult用于返回复杂对象。Builder既可以是抽象类也可以是接口。 2ConcreteBuilder具体建造者它实现了Builder接口实现各个部件的具体构造和装配方法定义并明确其所创建的复杂对象也可以提供一个方法返回创建好的复杂产品对象。 3Product产品角色它是被构建的复杂对象包含多个组成部件。具体建造者创建该产品的内部表示并定义其装配过程。 4Director指挥者指挥者又称为导演类它负责安排复杂对象的建造次序。指挥者与抽象建造者之间存在关联关系可以在其construct建造方法中调用建造者对象的部件构造与装配方法完成复杂对象的建造。客户端一般只需要与指挥者进行交互在客户端确定具体建造者的类型并实例化具体建造者对象也可以通过配置文件和反射机制然后通过指挥者类的构造函数或者Setter方法将该对象传入指挥者类中。 2.2、代码示例 在建造者模式的定义中提到了复杂对象。那么什么是复杂对象简单来说复杂对象是指那些包含多个成员变量的对象这些成员变量也称为部件或零件。例如汽车包括方向盘、发动机、轮胎等部件电子邮件包括发件人、收件人、主题、内容、附件等部件。一个典型的复杂对象类代码示例如下 /*** Description: 复杂对象类* Author: yangyongbing* CreateTime: 2023/07/28 08:17* Version: 1.0*/ public class Product {// 定义部件部件可以是任意类型包括值类型和引用类型private String partA;private String partB;private String partC;public Product() {}public String getPartA() {return partA;}public void setPartA(String partA) {this.partA partA;}public String getPartB() {return partB;}public void setPartB(String partB) {this.partB partB;}public String getPartC() {return partC;}public void setPartC(String partC) {this.partC partC;} }在抽象建造者类中定义了产品的创建方法和返回方法其典型代码如下 /*** Description: 抽象建造者* Author: yangyongbing* CreateTime: 2023/07/28 08:19* Version: 1.0*/ abstract class Builder {// 创建产品对象protected Product productnew Product();public abstract void buildPartA();public abstract void buildPartB();public abstract void buildPartC();// 返回产品对象public Product getResult(){return product;} }在抽象类Builder中声明了一系列抽象的buildPartX方法用于创建复杂产品的各个部件具体建造过程在ConcreteBuilder中实现。此外还提供了工厂方法getResult用于返回一个建造好的完整产品。 在ConcreteBuilder中实现了buildPartX方法通过调用Product的setPartX方法可以给产品对象的成员变量设值。不同的具体建造者在实现buildPartX方法时将有所区别例如setPartX方法的参数可能不一样在有些具体建造者类中某些setPartX方法无须实现提供一个空实现。而这些对于客户端来说都无须关心客户端只需知道具体建造者类型即可。 在建造者模式的结构中还引入了一个指挥者类Director该类主要有两个作用一方面它隔离了客户与创建过程另一方面它控制产品的创建过程包括某个buildPartX方法是否被调用以及多个buildPartX方法调用的先后次序等。指挥者针对抽象建造者编程客户端只需要知道具体建造者的类型即可通过指挥者类调用建造者的相关方法返回一个完整的产品对象。在实际生活中也存在类似指挥者一样的角色例如一个客户去购买计算机计算机销售人员相当于指挥者只要客户确定计算机的类型计算机销售人员可以通知计算机组装人员给客户组装一台计算机。指挥者类的代码示例如下 /*** Description: 指挥者类* Author: yangyongbing* CreateTime: 2023/07/28 08:29* Version: 1.0*/ public class Director {private Builder builder;public Director(Builder builder) {this.builder builder;}public void setBuilder(Builder builder) {this.builder builder;}// 产品构建与组装方法public Product construct() {builder.buildPartA();builder.buildPartB();builder.buildPartC();return builder.getResult();} } 在指挥者类中可以注入一个抽象建造者类型的对象其核心在于提供了一个建造方法construct在该方法中调用了builder对象的构造部件的方法最后返回一个产品对象。 对于客户端而言只需关心具体的建造者即可。一般情况下客户端类代码片段如下 /*** Description: 客户端* Author: yangyongbing* CreateTime: 2023/07/28 08:39* Version: 1.0*/ public class Client {public static void main(String[] args) {Builder buildernew ConcreteBuilder();// 可通过配置文件实现Director director new Director(builder);Product construct director.construct();} }可以通过配置文件来存储具体建造者类ConcreteBuilder的类名使得更换新的建造者时无须修改源代码系统扩展更为方便。在客户端代码中无须关心产品对象的具体组装过程只需指定具体建造者的类型即可。 建造者模式与抽象工厂模式有点相似但是建造者模式返回一个完整的复杂产品而抽象工厂模式返回一系列相关的产品。在抽象工厂模式中客户端通过选择具体工厂来生成所需对象而在建造者模式中客户端通过指定具体建造者类型并指导Director类如何去生成对象侧重于一步一步地构造一个复杂对象然后将结果返回。如果将抽象工厂模式看成一个汽车配件生产厂生成不同类型的汽车配件那么建造者模式就是一个汽车组装厂通过对配件进行组装返回一辆完整的汽车。 在建造者模式中客户端只需实例化指挥者类指挥者类针对抽象建造者编程。客户端根据需要传入具体的建造者类型指挥者将指导具体建造者一步一步地构造一个完整的产品逐步调用具体建造者的buildX方法相同的构造过程可以创建完全不同的产品。 3、建造者模式总结 建造者模式的核心在于如何一步一步地构建一个包含多个组成部件的完整对象使用相同的构建过程构建不同的产品。在软件开发中如果需要创建复杂对象并希望系统具备很好的灵活性和可扩展性可以考虑使用建造者模式。 3.1、优点 1在建造者模式中客户端不必知道产品内部组成的细节将产品本身与产品的创建过程解耦使得相同的创建过程可以创建不同的产品对象。 2每个具体建造者都相对独立而与其他具体建造者无关。因此可以很方便地替换具体建造者或增加新的具体建造者用户使用不同的具体建造者即可得到不同的产品对象。由于指挥者类针对抽象建造者编程增加新的具体建造者无须修改原有类库的代码系统扩展方便符合开闭原则。 3可以更加精细地控制产品的创建过程。将复杂产品的创建步骤分解在不同的方法中使得创建过程更加清晰也更方便使用程序来控制创建过程。 3.2、缺点 1建造者模式所创建的产品一般具有较多的共同点其组成部分相似。如果产品之间的差异性很大例如很多组成部分都不相同就不适合使用建造者模式因此其使用范围受到一定的限制。 2如果产品的内部结构复杂且多变可能会需要定义很多具体建造者类来实现这种变化这就导致系统变得很庞大增加系统的理解难度和运行成本。 3.3、适用场景 1需要生成的产品对象有复杂的内部结构这些产品对象通常包含多个成员变量。 2需要生成的产品对象的属性相互依赖需要指定其生成顺序。 3对象的创建过程独立于创建该对象的类。在建造者模式中通过引入指挥者类将创建过程封装在指挥者类中而不在建造者类和客户类中。 4隔离复杂对象的创建和使用并使得相同的创建过程可以创建不同的产品。
http://wiki.neutronadmin.com/news/323056/

相关文章:

  • 违反建设投诉网站举报怎样帮拍卖网站做策划
  • 网站推广的效果seo网站推广服务
  • 海南省住房和城乡建设厅官网网站微商城源码
  • 许昌市住房建设局网站三亚建设网站
  • 网站后台点击添加图片没有反应网站设计案例欣赏
  • 网站建设模拟软件小程序源码开发
  • 苏州制作网站哪家好网站服务器如何做热备价
  • 做字幕网站有哪些广州建站免费模板
  • 怎样提高网站点击率怎么让WORDPRESS首页显示菜单
  • 网站上线 串词app服务器搭建教程
  • 手机怎么做弹幕小视频网站初中学生做那个的网站
  • 建设网站需要哪些硬件宁波建设网站价格
  • 视频号关键词搜索排名网络营销乐云seo
  • 一般网站要多大空间湖南响应式网站建设
  • 罗阳网站建设wordpress 注册侧边栏
  • 渭南做网站电话淘客返利网站建设
  • 阳狮做网站平台网站怎么建设
  • 做同性恋的珠宝网站怎么用vps做网站
  • 网站制作 语言选择怎么做开发一款app需要多少人
  • 您身边的网站建设顾问哪个网站可以接项目做
  • 六安电商网站建设价格wordpress上长缺少临时文件夹
  • 研发项目备案在哪个网站做seo是什么职位的缩写
  • 外贸网站论文湘潭今天刚刚发生的新闻
  • H5响应式网站数据新冠最新发布会
  • 怎样做视频直播网站电商网名大全
  • 网站获取访客qq号码wordpress mp6
  • 17一起做网站后台建筑工程网线接头规范
  • wordpress 主题不显示图片首页排名关键词优化
  • 马鞍山网站建设制作湛江商城网站开发设计
  • 网站建设 锋云科技在线设计平台代理加盟