java设计模式之生成器模式
来源:互联网 发布:c语言字符串的复制 编辑:程序博客网 时间:2024/05/29 18:55
java设计模式参考文章:
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的***创建过程加以抽象***,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
## 代码示例 ##
public interface Engine { void run();}public class HighEngine implements com.design_pattern.Builder.Engine { public void run() { System.out.println("跑的快"); }}public class LowEngine implements com.design_pattern.Builder.Engine { public void run() { System.out.println("跑的慢"); }}public interface Seat { void msg();}public class HighSeat implements com.design_pattern.Builder.Seat { public void msg() { System.out.println("很舒服"); }}public class LowSeat implements com.design_pattern.Builder.Seat { public void msg() { System.out.println("不是很舒服"); }}public class Car { private Engine engine; private Seat seat; public Engine getEngine() { return engine; } public void setEngine(Engine engine) { this.engine = engine; } public Seat getSeat() { return seat; } public void setSeat(Seat seat) { this.seat = seat; }}public interface CarBuilder { void makeEngine(); void makeSeat();}public class HighCarBuilder implements CarBuilder { Car car = new Car(); public void makeEngine() { car.setEngine(new HighEngine()); } public void makeSeat() { car.setSeat(new HighSeat()); } public Car getCar() { return car; }}public class LowCarBuilder implements CarBuilder { Car car = new Car(); public void makeEngine() { car.setEngine(new LowEngine()); } public void makeSeat() { car.setSeat(new LowSeat()); } public Car getCar() { return car; }}public class CarDirector { public void makeCar(CarBuilder carBuilder) { carBuilder.makeEngine(); carBuilder.makeSeat(); }}
##测试##
public class Main { public static void main(String[] args) { CarDirector carDirector = new CarDirector(); LowCarBuilder lowCarBuilder = new LowCarBuilder(); HighCarBuilder highCarBuilder = new HighCarBuilder(); carDirector.makeCar(lowCarBuilder); carDirector.makeCar(highCarBuilder); Car lowCar = lowCarBuilder.getCar(); lowCar.getEngine().run(); lowCar.getSeat().msg(); Car highCar = highCarBuilder.getCar(); highCar.getEngine().run(); highCar.getSeat().msg(); }}
## 优点 ##
1.生成器模式将对象的构造过程封装在具体的生成器中,用户使用不同的具体生成器就可以得到该对象的不同表示。2.生成器模式将对象的构造过程从创建该对象的类中分离出来,使用户无须了解该对象的具体组件。3.可以更加精细有效的控制对象的构造过程。生成器将对象的构造过程分解成若干步骤,这就是程序可以更加精细,有效的控制整个对象的构造。4.生成器模式将对象的构造过程与创建该对象类解耦,使对象的创建更加灵活有弹性。5.当增加新的具体的生成器时,不必修改指挥者的代码,即该模式满足开-闭原则。
##解析##
- 抽象工厂注重的是不同的工厂生产不同的产品,builder注重的是某个产品由不同的零件组成,产品的生产工程。Director就是负责产品组装的,是控制生产过程的;而builder是负责产品部件生产的。这样就实现了“过程”和“部件”的解耦。抽象工厂通过不同的构建过程生成不同的对象表示,而Builder模式通过相同的构建过程生成不同的表示。
- StringBuilder的append();JDBC的PreparedStatement;JDOM的DomBuilder、SAXBuilder;MyBatis的SqlSessionFactoryBuilder。
阅读全文
0 0
- java设计模式 之生成器模式 Builder
- java设计模式之生成器模式
- java设计模式之builder生成器模式
- java设计模式之生成器模式
- JAVA设计模式之生成器模式
- 设计模式之生成器
- Java设计|生成器模式
- 设计模式之-生成器模式
- 设计模式之生成器模式
- 设计模式之生成器模式
- 设计模式之生成器模式
- 设计模式之生成器模式
- Java设计模式--生成器模式
- Java设计模式:生成器模式
- java设计模式(创建型)之生成器模式
- iOS设计模式之生成器
- 设计模式之Builder生成器模式
- C# 设计模式之生成器模式
- IKAnalyzer 中文分词的不同版本切词方式
- Python自然语言处理 7 从文本提取信息
- 银行常用加密算法PINBlock加密
- 11月24日云栖精选夜读:如何打造千万级Feed流系统?阿里数据库技术解读
- spring mvc注解回忆
- java设计模式之生成器模式
- LeetCode(3) Longest Substring Without Repeating Characters解题报告
- 【转】程序debug正常release错误
- Mac 下 node安装目录
- 修改数据库字符集,字段字符集(mysql)
- 模仿慕课网前后端java视频搭建 第一天:环境搭建
- Java多线程
- 非cmake方式Visual C++ 2010编译mysql-connector-C++静态库
- 优秀的Android开源项目收集