软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))代码讲解

  • 说明
  • Java代码
  • 注释

说明

生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,其类图如下图所示。

Java代码

import java.util.*;  //把util这个包下的全部类导入到程序中//*表示的是通配符,包括util的所有类class Product {private String partA;private String partB;public Product() {}public void setPartA(String s) { partA = s;   //将方法setPartA的参数s赋值给类Product的成员变量partA}public void setPartB(String s) { partB = s; //将方法setPartB的参数s赋值给类Product的成员变量partB}
}interface Builder {    //定义算法的公共接口Builderpublic void buildPartA();public void buildPartB();public Product getResult();
}class ConcreteBuilder1 implements Builder {private Product product;public ConcreteBuilder1() { //定义公有属性的同名构造方法ConcreteBuilder1product = new Product();    //实例化Product,赋值给product变量}public void buildPartA() { product.setPartA("Component A");  //通过ConcreteBuilder1的变量product来调用Product所提供的公共接口setPartA}public void buildPartB() { product.setPartB("Component B");  //通过ConcreteBuilder1的变量product来调用Product所提供的公共接口setPartB}public Product getResult() { return product;}
}class ConcreteBuilder2 implements Builder {// 代码省略
}class Director {private Builder builder;public Director(Builder builder) { //定义公有属性的同名构造方法Directorthis.builder = builder; //将方法Director的参数builder赋值给类Director的成员变量builder}public void construct() {builder.buildPartA();  //通过Director的变量builder来调用Builder所提供的公共接口buildPartA//也可以写builder.buildPartB()//代码省略}
}class Test {public static void main(String[] args) {   //定义主方法(程序入口)Director director1 = new Director(new ConcreteBuilder1());  //实例化Director,赋值给director1变量director1.construct();   //通过Test的变量director1来调用Director所提供的公共接口construct}
}

注释

几点需要记住的:

  1. 抽象类不一定有抽象方法,有抽象方法的一定是抽象类;
  2. 抽象类的作用是为其子类提供统一的操作接口;
  3. 抽象类需要子类去继承,即extends;
  4. 抽象类不能直接实例化,而是由继承它的子类实例化;
  5. 接口需要子类去实现,即implements,实现接口就要实现接口中的所有方法;
  6. 接口里的方法都是抽象方法,abstract可省略,抽象方法无方法体;
  7. 调用抽象方法:对象名.方法名;
  8. 调用静态方法:类名.方法名;
  9. 实例化:父类 对象名= new 子类名();
  10. 类图中的+对应修饰符public;
  11. 类图中的-对应修饰符private,private表示私有的,只有本类内部可以使用;
  12. 类图中的#对应修饰符protected,protected表示受保护的,只有本类或子类或父类中可以访问;
  13. 类图中的~对应修饰符package;
  14. 枚举类自动添加public、static、final修饰;
  15. this:当方法的参数名与类的成员变量同名时,可以借助this指针来进行区别;
  16. 类的成员变量的类型和方法的参数的类型应该保持相同;
  17. 为了表示类与类之间的聚集关系,使用了Java包中的类模板List,类模板List必须在实例化之后才能使用;

软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解相关推荐

  1. 软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))Java代码讲解

    软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))代码讲解 说明 Java代码 注释 说明 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且 ...

  2. 2022年下半年软考网络规划设计师下午真题及答案解析

    2022年下半年软考网络规划设计师下午真题及答案解析 试题一 案例一 某单位网站受到攻击,首页被非法篡改.经安全专业机构调查,该网站有一个两年前被人非法上传的后门程序,本次攻击就是因为其他攻击者发现该 ...

  3. 2021年11月软考网络规划设计师下午真题及答案解析

    2021年11月软考网络规划设计师下午真题及答案解析 试题一 阅读以下说明,回答问题1至问答4,将解答填入答题纸对应得解答栏内. (说明) 某园区组网图如图1-1所示,该网络中接入交换机利用QinQ技 ...

  4. 视频教程-2020软考软件设计师-上午真题解析视频课程-软考

    2020软考软件设计师-上午真题解析视频课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在<计 ...

  5. 视频教程-2020软考软件设计师下午案例分析视频培训课程-软考

    2020软考软件设计师下午案例分析视频培训课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在< ...

  6. 2021年软考信息安全工程师下午真题(考生回忆版)

    如有完整真题或更全的大佬,请在下面留言.万分感谢! 参考答案为个人理解和回忆,如有错误请在下方留言,感谢! 真题内容为考生回忆,只供学习交流使用,请勿用于商业用途! 2021年下午一共四道题 第一题 ...

  7. 2019上半年软件设计师 下午真题-简答题及免费答案(一)

    2019上半年软件设计师 下午真题-简答题及免费答案(一) 试题一(15分) 阅读下列说明和图,回答问题1至4,将解答填入答题纸的对应栏内. [说明] 某学校欲开发一学生跟踪系统,以便更自动化.更全面 ...

  8. 2021年11月软考网络规划设计师上午真题及答案解析

    2021年11月软考网络规划设计师上午真题及答案解析 1.为防范国家数据安全风险.维护国家安全.保障公共利益,2021年7月,中国网络安全审查办公室发布公告,对"滴滴出行".&qu ...

  9. 2022年下半年软考网络规划设计师论文真题

    2022年下半年软考网络规划设计师论文真题 试题 一 论5G与校园网络融合的规划与设计 近年来,教育部等部门印发了<教育信息化2 .0行动计划>: <关于推进教育新型基础设施建 设构 ...

最新文章

  1. 大前端晋级系列之-策略模式
  2. 2017年总结的前端文章——CSS高级技巧汇总
  3. leetcode21
  4. 真正聪明的人,为什么从不去社交?
  5. centos7.3下apache搭建django[未成功]
  6. php print r用法,php中echo(),print(),print_r()用法
  7. Spring源码学习--new()和反射的实例化区别
  8. 极客大学产品经理训练营 产品思维和产品意识 作业2
  9. 有道单词本手机和电脑同步问题
  10. [web开发] Vue+Spring Boot 上海大学预约系统开发记录
  11. 英文的pdf文件怎么翻译成中文
  12. PoE供电技术与应用
  13. 电子护照阅读器解决方案
  14. ai动漫生成软件哪个好?这篇文章告诉你
  15. 交换机/路由器基本配置
  16. springboot影院售票小程序毕业设计源码111154
  17. u盘kali linux淘宝,爱了!3 个受欢迎的 U盘Linux 发行版|Linux 中国
  18. python 三维坐标图
  19. mysql 日期转周_Mysql 日期转换星期
  20. 广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)

热门文章

  1. K8S系列(六)DaemonSet详解
  2. 模拟退火算法(Simulated Annealing,SA)
  3. 为多孔介质的当量直径_多孔介质
  4. 树莓派3b程序控制无人机 (一)——电脑连树莓派
  5. 计算机系统密码保护,安装程序需要密码、安装程序密码保护的方法
  6. print spooler服务自动关闭
  7. 网络安全现状:揭秘白帽黑客的真实收入
  8. iphone短信自动转发_如何在iPhone上删除或转发个人短信
  9. uni-app 封装底部弹出框
  10. Intel研究院院长吴甘沙演讲全文:大数据分析师的卓越之道(32PPT珍藏版)