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

打渔网站建设新冠疫情最新消息今天

打渔网站建设,新冠疫情最新消息今天,网站首页原型图,移动端网站建设 新闻动态as插件: 摘自: JamesZBL / java_design_patterns 示例: statusview/StatusViewBuilder 创建者模式 ( Builder ) 用途 将一个复杂对象的构造与它分开,使得同样的构造过程可以产生不同的对象。 建造者(Builder&…

as插件:

在这里插入图片描述

摘自:

JamesZBL / java_design_patterns

示例:

statusview/StatusViewBuilder

创建者模式 ( Builder )

用途

将一个复杂对象的构造与它分开,使得同样的构造过程可以产生不同的对象。

建造者(Builder)模式的定义:

指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

实例

假定需要生成一个虚拟的人物模型,人物主要包括几个简单的属性:姓名、年龄、国籍以及肤色。假如一个数据模型的拥有很多属性,如果单纯使用构造方法来实例化对象,势必会造成构造方法参数爆炸的问题,也可以称之为“反可伸缩构造方法模式”。代码的可读性和可靠性大大降低。此时,可以为这个对象创建的过程指定一个创建者,我们只需要向创建者描述该对象的一些具体细节,接下来的构造过程就统统交给创建者完成了。

以下是“反可伸缩构造方法模式”的一个实例:

public Person(String name,Integer age,Nationality nationality,SkinColor skinColor...){...}

如果一直这样下去,随着属性的增多,构造方法的参数的数量也会变得越来越多,对于开发人员是非常头疼的。对属性的更改使得构造方法的维护难度增加了不少,这就是所谓的“反可伸缩构造方法模式”。

模式分析

Person 类

public class Person {private final String name;private final Integer age;private final Nationality nationality;public String getName() {return name;}public Integer getAge() {return age;}public Nationality getNationality() {return nationality;}public SkinColor getSkinColor() {return skinColor;}private final SkinColor skinColor;public Person(Builder builder) {this.name = builder.name;this.age = builder.age;this.skinColor = builder.skinColor;this.nationality = builder.nationality;}
}

Person 类的创建者

public static class Builder {private String name;private Integer age;private Nationality nationality;private SkinColor skinColor;public Builder age(Integer age) {this.age = age;return this;}public Builder name(String name) {if (null == name) {throw new IllegalArgumentException("人必须有名字!");}this.name = name;return this;}public Builder nationality(Nationality nationality) {this.nationality = nationality;return this;}public Builder skinColor(SkinColor skinColor) {this.skinColor = skinColor;return this;}public Person build() {return new Person(this);}
}

Person 类对象的构造过程

Person personWang = new Person.Builder().name("小王").age(25).nationality(Nationality.CHINA).skinColor(SkinColor.YELLOW).build();

适用场景

  • 创建一个复杂对象的算法应该独立于组成对象的组成部分以及它们是如何组合的
  • 构建过程必须为所构造的对象提供不同的表示形式
http://www.lbrq.cn/news/2548747.html

相关文章:

  • 宁波手机网站建设百度搜索引擎原理
  • 优客逸家网站源码北京seo课程培训
  • 中小企业网站建设好么网络广告策划案
  • 苏州北京网站建设sem竞价推广托管代运营公司
  • 购买云服务器后怎么做网站谷歌优化的网络公司
  • 好友介绍网站怎么做seo是什么化学名称
  • wordpress弹出登陆优化大师客服电话
  • 做网站 后端是谁来做的2023必考十大时政热点
  • 官方网站建设公司关键词排名点击软件网站
  • 建设网站的网站互联网平台
  • h5开发wordpress客户端优化关键词排名seo
  • 烟台广告公司网站建设河南做网站优化
  • 网站建设步骤详解视频免费行情软件网站下载大全
  • 企业主页的特点快速刷排名seo软件
  • php网站空间购买苏州seo网络推广
  • 用dreamweaver建设网站成品成功营销十大经典案例
  • 自己给公司做网站b站推广入口在哪
  • 做网站需要的技术代发百度首页排名
  • 制作视频网站违法吗网站开发建设步骤
  • 建设新闻网站的意义海南百度竞价推广
  • 网站建设与服务考试友链网
  • 苏州网站建设招聘什么是关键词举例说明
  • 电气营销型网站方案杭州上城区抖音seo如何
  • 北京网站制作费用品牌推广方案范文
  • 做动漫网站的意义网页搜索优化seo
  • 广安市建设局新网站学seo优化
  • 设置自己的网站如何被百度收录
  • 企业宣传网宁波seo外包引流推广
  • 九台区建设银行网站企业营销推广方案
  • 做推广的网站那个好青岛网站
  • windows系统安装文生图大模型Stable diffusion V3.5 large(完整详细可用教程)
  • VSCode Python 与 C++ 联合调试配置指南
  • MySQL 8.0 OCP 1Z0-908 题目解析(38)
  • 智能Agent场景实战指南 Day 26:Agent评估与性能优化
  • 2024 年 NOI 最后一题题解
  • Shopify Draggable + Vue 3 完整指南:打造现代化拖拽交互体验