软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解
软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(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}
}
注释
几点需要记住的:
- 抽象类不一定有抽象方法,有抽象方法的一定是抽象类;
- 抽象类的作用是为其子类提供统一的操作接口;
- 抽象类需要子类去继承,即extends;
- 抽象类不能直接实例化,而是由继承它的子类实例化;
- 接口需要子类去实现,即implements,实现接口就要实现接口中的所有方法;
- 接口里的方法都是抽象方法,abstract可省略,抽象方法无方法体;
- 调用抽象方法:对象名.方法名;
- 调用静态方法:类名.方法名;
- 实例化:父类 对象名= new 子类名();
- 类图中的+对应修饰符public;
- 类图中的-对应修饰符private,private表示私有的,只有本类内部可以使用;
- 类图中的#对应修饰符protected,protected表示受保护的,只有本类或子类或父类中可以访问;
- 类图中的~对应修饰符package;
- 枚举类自动添加public、static、final修饰;
- this:当方法的参数名与类的成员变量同名时,可以借助this指针来进行区别;
- 类的成员变量的类型和方法的参数的类型应该保持相同;
- 为了表示类与类之间的聚集关系,使用了Java包中的类模板List,类模板List必须在实例化之后才能使用;
软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解相关推荐
- 软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))Java代码讲解
软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))代码讲解 说明 Java代码 注释 说明 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且 ...
- 2022年下半年软考网络规划设计师下午真题及答案解析
2022年下半年软考网络规划设计师下午真题及答案解析 试题一 案例一 某单位网站受到攻击,首页被非法篡改.经安全专业机构调查,该网站有一个两年前被人非法上传的后门程序,本次攻击就是因为其他攻击者发现该 ...
- 2021年11月软考网络规划设计师下午真题及答案解析
2021年11月软考网络规划设计师下午真题及答案解析 试题一 阅读以下说明,回答问题1至问答4,将解答填入答题纸对应得解答栏内. (说明) 某园区组网图如图1-1所示,该网络中接入交换机利用QinQ技 ...
- 视频教程-2020软考软件设计师-上午真题解析视频课程-软考
2020软考软件设计师-上午真题解析视频课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在<计 ...
- 视频教程-2020软考软件设计师下午案例分析视频培训课程-软考
2020软考软件设计师下午案例分析视频培训课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作.在< ...
- 2021年软考信息安全工程师下午真题(考生回忆版)
如有完整真题或更全的大佬,请在下面留言.万分感谢! 参考答案为个人理解和回忆,如有错误请在下方留言,感谢! 真题内容为考生回忆,只供学习交流使用,请勿用于商业用途! 2021年下午一共四道题 第一题 ...
- 2019上半年软件设计师 下午真题-简答题及免费答案(一)
2019上半年软件设计师 下午真题-简答题及免费答案(一) 试题一(15分) 阅读下列说明和图,回答问题1至4,将解答填入答题纸的对应栏内. [说明] 某学校欲开发一学生跟踪系统,以便更自动化.更全面 ...
- 2021年11月软考网络规划设计师上午真题及答案解析
2021年11月软考网络规划设计师上午真题及答案解析 1.为防范国家数据安全风险.维护国家安全.保障公共利益,2021年7月,中国网络安全审查办公室发布公告,对"滴滴出行".&qu ...
- 2022年下半年软考网络规划设计师论文真题
2022年下半年软考网络规划设计师论文真题 试题 一 论5G与校园网络融合的规划与设计 近年来,教育部等部门印发了<教育信息化2 .0行动计划>: <关于推进教育新型基础设施建 设构 ...
最新文章
- 大前端晋级系列之-策略模式
- 2017年总结的前端文章——CSS高级技巧汇总
- leetcode21
- 真正聪明的人,为什么从不去社交?
- centos7.3下apache搭建django[未成功]
- php print r用法,php中echo(),print(),print_r()用法
- Spring源码学习--new()和反射的实例化区别
- 极客大学产品经理训练营 产品思维和产品意识 作业2
- 有道单词本手机和电脑同步问题
- [web开发] Vue+Spring Boot 上海大学预约系统开发记录
- 英文的pdf文件怎么翻译成中文
- PoE供电技术与应用
- 电子护照阅读器解决方案
- ai动漫生成软件哪个好?这篇文章告诉你
- 交换机/路由器基本配置
- springboot影院售票小程序毕业设计源码111154
- u盘kali linux淘宝,爱了!3 个受欢迎的 U盘Linux 发行版|Linux 中国
- python 三维坐标图
- mysql 日期转周_Mysql 日期转换星期
- 广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)