Creational Patterns Part 4/5: Builder Pattern
来源:互联网 发布:光学镜头的优化设计pdf 编辑:程序博客网 时间:2024/04/29 08:32
Creational Patterns Part 4/5: Builder Pattern
目录
- Creational Patterns Part 45 Builder Pattern
- 目录
- Definition
- UML Class Diagram
- Implementation
Definition
Builder Pattern使用一些简单的对象来build一个复杂的对象,逐步完成build的过程。在Factory Pattern中一个method call就可以创建出一个对象,而如果一个对象的创建需要准备很多事情,就可以使用Builder Pattern。
何时使用?创建对象需要事先做很多事时/当构造方法或静态工厂的参数过多时。
使用频率: Medium Low
UML Class Diagram
Implementation
现在要组装一台电脑,那么通常需要主板、内存、显卡、屏幕和键盘等设备。也就是说在组装电脑之前,要提前准备好以上这些对象,可以用Builder Pattern来实现。
// Device.javapackage designpatterns.creationalpatterns.builder;public interface Device { String name(); Integer price();}// DeviceImpl.javapackage designpatterns.creationalpatterns.builder;class MainBoard implements Device { @Override public String name() { return "MainBoard"; } @Override public Integer price() { return 1000; }}class Memory implements Device { @Override public String name() { return "Memory"; } @Override public Integer price() { return 500; } }class VideoCard implements Device { @Override public String name() { return "VideoCard"; } @Override public Integer price() { return 2000; } }class Screen implements Device { @Override public String name() { return "Screen"; } @Override public Integer price() { return 1000; } }class KeyBoard implements Device { @Override public String name() { return "KeyBoard"; } @Override public Integer price() { return 500; } }// BuilderDemo.javapackage designpatterns.creationalpatterns.builder;import java.util.*;public class BuilderDemo { public static void main(String[] args) { ComputerBuilder builder = new ComputerBuilder(); // The client does't know or care about how the object is created Computer computer = builder.assembleComputer(); computer.showParts(); }}class ComputerBuilder { public Computer assembleComputer() { Computer computer = new Computer(); computer.add(new MainBoard()); computer.add(new Memory()); computer.add(new VideoCard()); computer.add(new Screen()); computer.add(new KeyBoard()); return computer; }}class Computer { private List<Device> deviceList = new ArrayList<Device>(); public void add(Device device) { deviceList.add(device); } public void showParts() { System.out.println(String.format("%-10s %5s", "Device", "Price")); System.out.println("——————————————————"); Integer totalPrice = 0; for(Device device: deviceList) { System.out.println(String.format("%-10s %5d", device.name(), device.price())); totalPrice += device.price(); } System.out.println("——————————————————"); System.out.println(String.format("%-10s %5d", "Computer", totalPrice)); }}// outputDevice Price——————————————————MainBoard 1000Memory 500VideoCard 2000Screen 1000KeyBoard 500——————————————————Computer 5000
0 0
- Creational Patterns Part 4/5: Builder Pattern
- Creational Patterns Part 5/5: Prototype Pattern
- Creational Patterns Part 1/5: Factory Pattern
- Creational Patterns Part 3/5: Singleton Pattern
- Design Pattern - Creational Patterns - Builder Pattern
- Creational Patterns Part 2/5: Abstract Factory Pattern
- Design Pattern----Creational Patterns
- Design Pattern - Creational Patterns - Factory Pattern
- Design Pattern - Creational Patterns - Singleton Pattern
- Design Pattern - Creational Patterns - Prototype Pattern
- Design Pattern - Creational Patterns - Abstract Factory Pattern
- Singleton Pattern(GoF-Creational Design Patterns)
- Structural Patterns Part 5/7: Facade Pattern
- Structural Patterns Part 4/7: Decorator Pattern
- Creational patterns
- Creational Pattern
- SUMMARY OF CREATIONAL PATTERNS
- Creational patterns_Java design patterns
- c#遍历一个文件夹下的所有文件包括子文件夹
- PID4 / 数列 ☆
- 205. Isomorphic Strings
- Android 中Adapter传值给Activity
- js得到url参数
- Creational Patterns Part 4/5: Builder Pattern
- Java匿名类
- c语言学习笔记18之函数2
- ruby之动态方法
- Python 集合1
- Leetcode 82. Remove Duplicates from Sorted List II 移除重复 链表版-2 解题报告
- 2016SDAU课程练习三1014
- Linux系统修改编码
- Spring线程池开发实战