浅谈二十三种设计模式之构建者模式
2018-02-24 23:00
253 查看
试想一下以下场景:神州飞船是怎么造出来的?或者说一辆汽车是怎么造出来的?我想应该是先由各个组织造出各种零件,然后再将这些组件组装起来,就造出来了神州飞船,汽车,甚至更复杂的东西都可以弄出来。
程序源于生活,高于生活,更多的是对日常生活的抽象,总结共性。
构建者模式即很像上面制造这些很复杂的产品的过程,它通过将一个复杂产品的零件准备和零件组装分离开来,达到了解耦合的作用。
程序设计者在许多地方也应用了这种设计模式,例如StringBuilder,SaxBuilder等等,一般以Builder结尾的都是利用的这种设计模式。
举个例子:我们有一个User对象,有三个属性:name,age,gendar;如果我需要一个属性不为空,而另外两个属性为空的对象怎么办?可能比较常见的就是这样做User user=new User();
user.setName("zhangsan");但是这种感觉不太好,用建造者模式改造了一下,如下:
程序源于生活,高于生活,更多的是对日常生活的抽象,总结共性。
构建者模式即很像上面制造这些很复杂的产品的过程,它通过将一个复杂产品的零件准备和零件组装分离开来,达到了解耦合的作用。
程序设计者在许多地方也应用了这种设计模式,例如StringBuilder,SaxBuilder等等,一般以Builder结尾的都是利用的这种设计模式。
举个例子:我们有一个User对象,有三个属性:name,age,gendar;如果我需要一个属性不为空,而另外两个属性为空的对象怎么办?可能比较常见的就是这样做User user=new User();
user.setName("zhangsan");但是这种感觉不太好,用建造者模式改造了一下,如下:
package com.kg.demo3; public class User { private String name; private int age; private String gendar; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGendar() { return gendar; } public void setGendar(String gendar) { this.gendar = gendar; } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", gendar=" + gendar + "]"; } public static Builder builder(){ return new Builder(); } static class Builder{ private User user=new User(); public Builder buildName(String name){ user.name=name; return this; } public Builder buildAge(int age){ user.age=age; return this; } public Builder buildGendar(String gendar){ user.gendar=gendar; return this; } public User build(){ return user; } } }那么接下来就可以这样来创建对象了:User user=User.builder().buildName("zhangsan");这就是构建者模式的一个简单应用,现在有一个第三方jar:lombok.jar,加上@Builder之后即可使用上面的方式创建对象,而无需自己加上上面内部类的代码,它会帮我们在程序编译时加上这些代码,很方便。
相关文章推荐
- 浅谈设计模式
- 浅谈设计模式
- 浅谈观察者设计模式
- Java设计模式--构建者模式(Builder)
- 浅谈Java设计模式(二)抽象工厂模式
- 二十三种设计模式之中介者模式
- 浅谈JAVA设计模式之——命令模式(Command)
- 浅谈MVP与Model-View-ViewModel(MVVM)设计模式
- Java-设计模式-工厂模式浅谈(一)-简单工厂模式
- 浅谈JAVA设计模式之——策略模式(Strategy)
- [设计模式]二十三种设计模式
- 菜鸟之路-浅谈设计模式之工厂模式
- java设计模式---构建者模式
- 深入体验JavaWeb开发内幕——浅谈面向对象的设计模式
- 浅谈设计模式——开山篇
- 【Java设计模式】浅谈设计模式(三)之策略模式
- 浅谈Android设计模式学习之观察者模式
- Android设计模式之浅谈MVP
- 设计模式之策略模式浅谈
- 浅谈 java 设计模式--观察者模式(Observer pattern)