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

成都旅游网站建设什么网站可以做设计

成都旅游网站建设,什么网站可以做设计,宁波网站关键词优化代码,网站方案范文1.1定义 维基百科定义 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象…

1.1定义

维基百科定义
生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。
它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

简单理解
将一个复杂对象的构建与它的表示分离,使得同样的构建过程,可以创建不同的表示.
用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道。

通用流程
先创建一个初始对象,然后逐渐添加新东西,最后调用 build() 方法完成构建。

1.2适用场景

相同的方法,不同的执行顺序,产生不同的事件结果。
对各部件或零件,都可以配到一个对象中,但是产生的运行结果又不相同时。
产品类非常复杂,或者产品类中的调用顺序不同产生了不同的结果,这个时候使用创建者模式非常合适。
当初始化一个对象特别复杂,如参数多,且很多参数都有默认值时(一个类有多个构造函数的时候,可以考虑使用建造者模式)
需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;
隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。
需要生成的对象内部属性本身相互依赖

1.3 优缺点

优点
封装性好,创建和使用分离
扩展性好、建造类之间独立、一定程度上解耦
缺点
产生多余的Builder对象
产品内部发生变化,建造者都要修改,成本较大,所以需要精心设计

建造者模式包含如下角色:

builder(抽象接口) : 为创建一个产品对象的各个部件指定抽象接口。
ConcreteBuilder(抽象接口的具体实现) : 实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
Director(接口的构造者和使用者) : 构造一个使用Builder接口的对象。
Product(被构造的复杂对象) : ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

示例演示

/*** @Author charles.yao* @Description 户信息(product 产品角色)* @Date 2023/2/10 16:22*/@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class UserInfo {private String id;private String name;private String age;private String phone;
}

/*** @Author charles.yao* @Description 用户信息构建抽象类(builder)* @Date 2023/2/10 16:25*/
public abstract class UserBuilder {public abstract void buildId(String id);public abstract void buildName(String name);public abstract void buildAge(String age);public abstract void buildPhone(String phone);public abstract UserInfo makeUserInfo();}

/*** @Author charles.yao* @Description 学生信息构建器(抽象接口的具体实现)* @Date 2023/2/10 16:29*/
public class StudentUserInfoBuilder extends UserBuilder {private UserInfo userInfo = new UserInfo();public void setUserInfo(UserInfo userInfo) {this.userInfo = userInfo;}@Overridepublic void buildId(String id) {userInfo.setId(id);}@Overridepublic void buildName(String name) {userInfo.setName(name);}@Overridepublic void buildAge(String age) {userInfo.setAge(age);}@Overridepublic void buildPhone(String phone) {userInfo.setPhone(phone);}@Overridepublic UserInfo makeUserInfo() {return userInfo;}
}

/*** @Author charles.yao* @Description 指导建造者建造* @Date 2023/2/10 16:35*/
public class UserInfoDirector {private StudentUserInfoBuilder studentUserInfoBuilder;public void setStudentUserInfoBuilder(StudentUserInfoBuilder studentUserInfoBuilder) {this.studentUserInfoBuilder = studentUserInfoBuilder;}public UserInfo makeUserInfo(String id, String name, String age, String phone) {studentUserInfoBuilder.buildAge(age);studentUserInfoBuilder.buildId(id);studentUserInfoBuilder.buildName(name);studentUserInfoBuilder.buildPhone(phone);return studentUserInfoBuilder.makeUserInfo();}
}

/*** @Author charles.yao* @Description 生成器测试类* @Date 2023/2/10 16:46*/
public class BuilderTest {public static void main(String[] args) {//userInfo 具体创建者StudentUserInfoBuilder studentUserInfoBuilder = new StudentUserInfoBuilder();//指导创建者UserInfoDirector userInfoDirector = new UserInfoDirector();userInfoDirector.setStudentUserInfoBuilder(studentUserInfoBuilder);//指导创建者生成userInfoUserInfo userInfo = userInfoDirector.makeUserInfo("1", "二狗", "20", "110");System.out.println("userInfo" + userInfo.toString());//===========================}
}
http://www.laogonggong.com/news/70966.html

相关文章:

  • 域名注册服务商seo岗位工作内容
  • 购物网站免费模板广州网站设计
  • 盐城哪家专业做网站wordpress vip视频解析
  • 网站做导航设计的作用是什么wordpress模板文件
  • 做网站常用工具湘潭做网站价格咨询磐石网络
  • 成都网站建设推广在线咨询网站建设 前端 后端
  • 厦门网站建设哪家公司好哈尔滨seo优化软件
  • 建设网站平台的用语怀柔网站制作
  • 苏州网站开发公司兴田德润放心建设厅八大员报名网站
  • 做网站软件dw如何推广网站业务
  • 福州科技网站建设怎么做电脑网页设计
  • 网络营销专业介绍及就业方向wordpress seo 标题
  • 学网站建设培训班教育培训机构加盟十大排名
  • 易网网站多少有的网站显示正在建设中
  • 网站制作模板程序wordpress 自定义首页
  • 银行网站开发免费开设网站
  • 58同城哈尔滨网站建设seo网络推广公司报价
  • wordpress二次元网站做白酒有没有必要做个网站
  • 贵阳的网站建设公司网页广告素材
  • 软件网站建设免费软件下载网站入口正能量
  • 开平建设局网站网页设计用什么软件
  • 印章在线生成器关键词优化教程
  • 南阳网(网站).合肥网站商城开发
  • 长沙建设外贸网站怎样建网站最快
  • 哪些属于功能型网站品牌形象设计
  • 网页制作网站源码二维码生成器软件下载
  • 优化站点wordpress 主题插件
  • 宿迁市建设局网站怎么投诉做项目网站要不要备案
  • 建设企业银行官方网站怎样做有效的黄页网站
  • 网站和软件是怎么做的网站营销特点