创建者模式
来源:互联网 发布:emc测试 知乎 编辑:程序博客网 时间:2024/05/29 09:14
一、创建模式涉及角色
1.抽象创建者角色(Builder):为创建一个产品对象的各个组件指定抽象接口。
2.具体创建者角色(ConcreteBuilder):实现抽象builder接口以构造和装配产品的各个组件,定义并明确它所创建的表示,并提供一个检索产品的接口。
包含构造和创建一个产品的所有代码。
3.指导者(Director):构造一个使用Builder接口的对象,指导构建过程。
4.产品(Product):表示被构造的复杂对象。ConcreteBuilder创建改成产品
二、在什么情况下使用建造模式
1. 需要生成的产品对象有复杂的内部结构,每一个内部成分本身可以是对象,也可以仅仅是一个对象(即产品对象)的一个组成部分。
2. 创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时。
3.构造过程必须允许被构造的对象有不同的表示时。
三、实例代码
publicinterface Builder {
publicvoid createPartA();
publicvoid createPartB();
publicvoid createPartC();
publicFood createFood();
}
publicclassChilderFoodBuilder implements Builder {
Foodfood;
publicChilderFoodBuilder() {
this.food= new Food();
}
@Override
publicvoid createPartA() {
System.out.println("创建的是儿童餐-A部分");
}
@Override
publicvoid createPartB() {
System.out.println("创建的是儿童餐-B部分");
}
@Override
publicvoid createPartC() {
System.out.println("创建的是儿童餐-C部分");
}
@Override
publicFood createFood() {
returnfood;
}
}
publicclassWomenFoodBuilder implements Builder {
Foodfood ;
publicWomenFoodBuilder() {
this.food= new Food();
}
@Override
publicvoid createPartA() {
System.out.println("创建的是适合女士的减肥餐-A");
}
@Override
publicvoid createPartB() {
System.out.println("创建的是适合女士的减肥餐-B");
}
@Override
publicvoid createPartC() {
System.out.println("创建的是适合女士的减肥餐-C");
}
@Override
publicFood createFood() {
returnfood;
}
}
publicclassFood {
privateStringpartA;
privateStringpartB;
privateStringpartC;
publicString getPartA() {
returnpartA;
}
publicvoid setPartA(String partA) {
this.partA= partA;
}
publicString getPartB() {
returnpartB;
}
publicvoid setPartB(String partB) {
this.partB= partB;
}
publicString getPartC() {
returnpartC;
}
publicvoid setPartC(String partC) {
this.partC= partC;
}
}
publicclassDirector {
publicFood createDiffTypeFood(Builder bu){
bu.createPartA();
bu.createPartB();
bu.createPartC();
returnbu.createFood();
}
}
publicclassTest {
publicstatic void main(String args[]) {
Director director =new Director();
director.createDiffTypeFood(newChilderFoodBuilder());
director.createDiffTypeFood(newWomenFoodBuilder());
}
}
阅读全文
0 0
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- 创建者模式
- Builder模式(创建者模式)
- 原型模式 - 创建者模式
- 设计模式--创建者模式
- 设计模式-创建者模式
- 创建者模式详解
- 创建者模式(Builder)
- android md5加密与php md5加密一致
- matlab无法正常加载excel
- Centos6.5 安装配置Weblogic环境
- 数据库基本概念(二
- java前后端分离后的跨域问题解决
- 创建者模式
- 27:级数求和
- Node.Js连接mysql
- invalid maximum heap size:-xmx4g
- 使用nodeJs+web Socket构建即时通讯(WebIM)
- CSS设置多余的文本显示省略号
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告
- 结构体中含有string 会异常的原因和解决办法
- laravel5.4 发送SMTP邮件