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

苏州那家公司做网站好dw做简单小说网站

苏州那家公司做网站好,dw做简单小说网站,网站开发都学什么,宁波网站建设推广公司说明#xff1a;本文介绍设计模式中#xff0c;创建型设计模式中的最后一个#xff0c;建造者模式#xff1b; 入学报道 创建型模式#xff0c;关注于对象的创建#xff0c;建造者模式也不例外。假设现在有一个场景#xff0c;高校开学#xff0c;学生、教师、职工都…说明本文介绍设计模式中创建型设计模式中的最后一个建造者模式 入学报道 创建型模式关注于对象的创建建造者模式也不例外。假设现在有一个场景高校开学学生、教师、职工都要办理相关的报道手续如签到、个人信息录入、分配身份证明学生证、教师证、职工证等等 首先创建一个抽象类如下 Person人员类有签到、个人信息、身份证明属性 /*** 人员*/ public class Person {/*** 签到*/private String signIn;/*** 个人信息*/private String profile;/*** 身份证明*/private String idCard;public String getSignIn() {return signIn;}public void setSignIn(String signIn) {this.signIn signIn;}public String getProfile() {return profile;}public void setProfile(String profile) {this.profile profile;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard idCard;} }在创建具体对象之前先创建一个抽象的建造者类用于统一方法定义人员对象 PersonBuilder人员建造者 /*** 抽象建造者*/ public abstract class PersonBuilder {Person person new Person();/*** 签到行为*/public abstract void buildSignIn();/*** 录入个人信息*/public abstract void buildProfile();/*** 办理身份证明*/public abstract void buildIdCard();/*** 建造完成* return*/public Person build() {return person;} }Student学生类继承人员建造者重写学生入学相关方法 /*** 学生入学*/ public class Student extends PersonBuilder {Overridepublic void buildSignIn() {person.setSignIn(学生已签到);}Overridepublic void buildProfile() {person.setProfile(学生信息已录入);}Overridepublic void buildIdCard() {person.setIdCard(学生证已办理);} }Teacher教师类继承人员建造者重写教师入学相关方法 /*** 教师入学*/ public class Teacher extends PersonBuilder {Overridepublic void buildSignIn() {person.setSignIn(老师已签到);}Overridepublic void buildProfile() {person.setProfile(老师个人信息已录入);}Overridepublic void buildIdCard() {person.setIdCard(老师身份证已办理);} }Employee职工类继承人员建造者重写职工入学相关方法 /*** 职工入学*/ public class Employee extends PersonBuilder {Overridepublic void buildSignIn() {person.setSignIn(员工已签到);}Overridepublic void buildProfile() {person.setProfile(员工个人信息已录入);}Overridepublic void buildIdCard() {person.setIdCard(员工身份证已办理);} }再创建一个建造者控制类协调入学后的具体事宜如先签到、后录入个人信息最后才发身份证明返回建造完成的人员对象 PersonController人员入学控制器 /*** 人员入学控制器*/ public class PersonController {/*** 人员入学* return*/public Person construct(PersonBuilder personBuilder) {personBuilder.buildSignIn();personBuilder.buildProfile();personBuilder.buildIdCard();return personBuilder.build();} }Client客户端演示人员入学过程 /*** 客户端*/ public class Client {public static void main(String[] args) {// 一个学生入学Person student new PersonController().construct(new Student());System.out.println(student.getSignIn());System.out.println(student.getProfile());System.out.println(student.getIdCard());System.out.println();// 一个老师入学Person teacher new PersonController().construct(new Teacher());System.out.println(teacher.getSignIn());System.out.println(teacher.getProfile());System.out.println(teacher.getIdCard());} }执行结果可见对象已创建完成 改进与优化 在《设计模式的艺术》第一版刘伟著中作者关于PersonController人员控制器类的作用有两点改进与优化的地方如下 改进可省略PersonController 可在抽象建造者类PersonBuilder人员建造者中定义一个静态的Person变量这样就不需要额外设立一个PersonController类了如下 PersonBuilder抽象人员建造者既统一了方法也完成了建造的流程 /*** 抽象建造者*/ public abstract class PersonBuilder {/*** 定义一个抽象的Person*/protected static Person person new Person();/*** 签到行为*/public abstract void buildSignIn();/*** 录入个人信息*/public abstract void buildProfile();/*** 办理身份证明*/public abstract void buildIdCard();/*** 建造Person* return*/public static Person build(PersonBuilder personBuilder) {personBuilder.buildSignIn();personBuilder.buildProfile();personBuilder.buildIdCard();return person;} }Client客户端使用人员建造者的build()方法建造对象 /*** 客户端*/ public class Client {public static void main(String[] args) {// 一个学生入学Person student PersonBuilder.build(new Student());System.out.println(student.getSignIn());System.out.println(student.getProfile());System.out.println(student.getIdCard());System.out.println();// 一个老师入学Person teacher PersonBuilder.build(new Teacher());System.out.println(teacher.getSignIn());System.out.println(teacher.getProfile());System.out.println(teacher.getIdCard());} }执行效果相同 优化细化建造过程 可以定义一个“钩子”方法“钩子”方法一般是“isXXX”命名的返回值为boolean类型。利用“钩子”方法规定某些人员可以跳过或者必须执行某方法来细化对象建造的流程。如规定教师人员的建造因为教师流动不大可以跳过录入信息流程。 就可以在PersonBuilder类中定义一个“钩子”方法默认返回true即默认所有人员都需要录入个人信息。如下 /*** 抽象建造者*/ public abstract class PersonBuilder {/*** 定义一个抽象的Person*/protected static Person person new Person();/*** 签到行为*/public abstract void buildSignIn();/*** 录入个人信息*/public abstract void buildProfile();/*** 办理身份证明*/public abstract void buildIdCard();/*** 钩子方法表示默认所有人都需要经过buildProfile()方法具体由子类实现*/public boolean isBuildProfile() {return true;}/*** 建造Person* return*/public static Person build(PersonBuilder personBuilder) {personBuilder.buildSignIn();// 根据钩子方法判断是否需要buildProfile()if (personBuilder.isBuildProfile()) {personBuilder.buildProfile();}personBuilder.buildIdCard();return person;} }教师类中可以重写这个“钩子”方法表示不需要执行录入个人信息这个流程了。 /*** 教师入学*/ public class Teacher extends PersonBuilder {Overridepublic void buildSignIn() {person.setSignIn(老师已签到);}Overridepublic void buildProfile() {person.setProfile(老师个人信息已录入);}Overridepublic void buildIdCard() {person.setIdCard(老师身份证已办理);}Overridepublic boolean isBuildProfile() {return false;} }客户端代码不变执行 /*** 客户端*/ public class Client {public static void main(String[] args) {// 一个学生入学Person student PersonBuilder.build(new Student());System.out.println(student.getSignIn());System.out.println(student.getProfile());System.out.println(student.getIdCard());System.out.println();// 一个老师入学Person teacher PersonBuilder.build(new Teacher());System.out.println(teacher.getSignIn());System.out.println(teacher.getProfile());System.out.println(teacher.getIdCard());} } 执行结果可以看到教师确实是没有执行录入个人信息的方法但是因为Person是static修饰的属性打印的是上面学生的值。 那么如果避免这个问题值得思考或者就不省略PersonController类。 小结 建造者模式通过定义一个抽象建造者类封装了对象创建的细节另外通过“钩子”方法可细化对象创建过程降低了系统复杂度维护了系统的灵活性和扩展性。 总结 本文参考《设计模式的艺术》、《秒懂设计模式》两书
http://www.w-s-a.com/news/445654/

相关文章:

  • 网站开发进修网站做301将重定向到新域名
  • 公司网站开发费用账务处理ucenter wordpress
  • 六站合一的优势少儿编程机构
  • 软件开发与网站开发学做美食网站哪个好
  • 网站搜索 收录优化百度推广页面投放
  • 响应式网站的优点浙江省网站域名备案
  • 网站安全 扫描深圳被点名批评
  • 在哪个网站可以一对一做汉教网站优化策略
  • 龙岩做网站的顺企网宁波网站建设
  • 昆山网站建设河北连锁餐厅vi设计公司
  • 新蔡县住房和城乡建设局网站南昌租房网地宝网
  • 南宁做网站费用iis编辑网站绑定
  • 家用宽带做网站服务器建网站费用明细
  • 电商 网站 降低 跳出率 措施 效果书画院网站模板
  • 兰州移动官网网站建设上海工商网上公示系统
  • 在招聘网站里做电话销售免费空间可以上传网站吗
  • 梅州建站怎么做中国建设银行官网下载
  • 网站静态化设计广州网站备案方案
  • 西安网络技术有限公司网站扬中网站建设方案
  • 青海省教育厅门户网站wordpress core
  • idc科技公司网站模板蜜雪冰城网络营销案例分析
  • 微信与网站对接手机软件怎么做
  • 户县网站建设珠海专业制作网站
  • 麦当劳的网站优化建议猎头公司工作怎么样
  • 合肥地区网站制作网页浏览器打不开
  • 做网站的不给ftp网站如何做触屏滑动
  • wordpress statraq重庆百度优化
  • 企业网站官网英文WordPress站点切换为中文
  • 服装公司网站定位一点号自媒体平台
  • 密云微网站建设汽车之家手机官网首页