最近看了一些设计模式,感觉短短的代码,能抽象出很多东西,
原来写代码的时候每整体的考虑,也许只有写了一段时间的代码,才会对设计模式有比较深的体会
builder创建者,从名字上理解,他主要承担的是构件对象的操作
书上定义
builder:将一个复杂对象的构造与它的表示分离,使得同样的构件过程可以创建不同的表示
builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知
道内部的具体构建细节.有点类似工厂方法模式和抽象工厂模式,
从概念上,大家理解都差不多,大概的意思就是简化代码,只要写几行代码就可以创建一个你需要的对象,而且可以从用.从用还
比较简单.
贴代码吧
我这里创建了一个电脑builder
Computer.java这里实现了一台电脑需要的配件
package com.linpyi.mode;
public class Computer {
private String CPU;
private String disk;//硬盘
private String memory;//内存
private String mainboard;//主板
public String getCPU() {
return CPU;
}
public void setCPU(String cpu) {
CPU = cpu;
}
public String getDisk() {
return disk;
}
public void setDisk(String disk) {
this.disk = disk;
}
public String getMemory() {
return memory;
}
public void setMemory(String memory) {
this.memory = memory;
}
public String getMainboard() {
return mainboard;
}
public void setMainboard(String mainboard) {
this.mainboard = mainboard;
}
}
ComputerBuilder.java 抽象电脑组装类,每个不同产品的电脑都继承这个类,里面实现组装电脑的基本方法
package com.linpyi.mode;
/**
* 建造电脑组装类
*
* @author work
*
*/
public abstract class ComputerBuilder {
public abstract void makeCPU();
public abstract void makeDisk();
public abstract void makeMemory();
public abstract void makeMainboard();
public abstract Computer getComputer();
}
LenvoBuilder.java 联想电脑组装类,
package com.linpyi.mode;
public class LenvoBuilder extends ComputerBuilder{
Computer computer = new Computer();
@Override
public Computer getComputer() {
// TODO Auto-generated method stub
return computer;
}
@Override
public void makeCPU() {
computer.setCPU("Lenvo-AMD");
}
@Override
public void makeDisk() {
// TODO Auto-generated method stub
computer.setDisk("Lenvo-seagate");
}
@Override
public void makeMainboard() {
// TODO Auto-generated method stub
computer.setMainboard("Lenvo-ausu");
}
@Override
public void makeMemory() {
// TODO Auto-generated method stub
computer.setMemory("Lenvo-kingston");
}
}
ComputerDirector.java 组装类(DIR)自己组装电脑拉
package com.linpyi.mode;
/**
* 电脑组装类
* @author work
*
*/
public class ComputerDirector {
public void makeComputer(ComputerBuilder builder){
builder.makeCPU();
builder.makeDisk();
builder.makeMainboard();
builder.makeMemory();
}
}
Client.java 客户操作类
package com.linpyi.mode;
/**
* 操作类
* @author work
*
*/
public class Client {
public static void main(String[] args){
//实例化一个创建者
ComputerDirector director = new ComputerDirector();
//实例化一个lenvo的类
ComputerBuilder builder = new LenvoBuilder();
//创建产品,用户不需要知道创建里面的方法
director.makeComputer(builder);
//获得产品
Computer computer = builder.getComputer();
System.out.println(computer.getCPU());
System.out.println(computer.getDisk());
System.out.println(computer.getMainboard());
System.out.println(computer.getMemory());
}
}
运行结果
Lenvo-AMD
Lenvo-seagate
Lenvo-ausu
Lenvo-kingston
以后如果需要增加电脑生产品牌,只要创建一个builder 例如 HPBuilder.java
貌似一看起来和工厂模式很像很像,我也对比了下,确实有点像
总感觉他和抽象工厂模式还是有一定差别,比如在创建对象上,但是又写不出来,也许我对这2种模式的理解还不够深刻,代码写
的不够多
分享到:
相关推荐
统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的步骤组合而成;这些的算法和步骤是稳定的,而构成这个对象的子对象却经常由于需求改变而发生...
将一个复杂对象的构造与它的表示分离,使同样的构建 过程可以创建不同的表示,这样的设计模式被称为建造者模式。
设计模式之---建造模式 1,建造模式属于对象的...抽象建造者builder接口,实现生产产品操作--创建完成 提供产品实例; ,导演者(director):调用具体建造者角色以创建产品对象; ,产品(Product):建造中的复杂对象,
3.2 Builder(生成器)—对象创建型模式 633.3 Factory Method(工厂方法)—对象创建型模式 70 3.4 Prototype(原型)—对象创建型模式 87 3.5 Singleton(单件)—对象创建型模式 84 3.6 创建型模式的讨论 89 第 4...
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
1.2 Smalltalk MVC中的设计模式 1.3 描述设计模式 1.4 设计模式的编目 1.5 组织编目 1.6 设计模式怎样解决设计问题 1.7 怎样选择设计模式 1.8 怎样使用设计模式 第二章 实例研究:设计一个文档编辑器 2.1 设计问题...
设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...
23种设计模式 目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(单例) 结构型 6. Adapter Class/Object(适配器) ...
设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...
C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) C#面向...
整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法可以作为后来者的榜样。如果要知道怎样恰当定义和描述设计模式,我们应该可以从他们那儿获得启发”--steve...
书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) ...
建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype)结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite ...
1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象...
创建型模式用来处理对象的创建过程,主要包含以下5种设计模式: 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder Pattern) 原型模式...
在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...