这篇记录下建造者模式、粉饰器模式、门面模式、观察者模式、代理模式和责任链模式~
1、建造者模式
(一)、定义
将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以创建出不同的表示。 通常用于大型复杂对象的创建,并且对于对象的构建有一定的顺序要求。
(二)、结构

比如我们要创建一个Object对象,我们可以将Object对象的属性按照构建的顺序要求,划分成不同的步骤,封装成一个接口。根据不同的建造顺序,编写不同的实现。然后再写一个Director,来封装对象构建过程,提供一个构建的方法,来输出构建的对象。
(三)、代码演示
/**
* @Description: 建造者模式
*/
public interface Builder {
/**
* @description: 构建第一部分属性接口
*
* @param: objectPart1
* @return: void
**/
void buildPart1(String objectPart1);
/**
* @description: 构建第二部分属性接口
*
* @param: objectPart2
* @return: void
**/
void buildPart2(String objectPart2);
/**
* @description: 构建第三部分属性接口
*
* @param: objectPart3
* @return: void
**/
void buildPart3(String objectPart3);
/**
* @description: 构建对象
*
* @return: BuildObject
**/
BuildObject build();
}
/**
* @Description: 构建对象的实现
*/
public class ObjectBuilder implements Builder {
private String objectPart1;
private String objectPart2;
private String objectPart3;
@Override
public void buildPart1(String objectPart1) {
this.objectPart1 = objectPart1;
}
@Override
public void buildPart2(String objectPart2) {
this.objectPart2 = objectPart2;
}
@Override
public void buildPart3(String objectPart3) {
this.objectPart3 = objectPart3;
}
@Override
public BuildObject build() {
return new BuildObject(this.objectPart1, this.objectPart2, this.objectPart3);
}
}
/**
* @Description: 建造者对象
*/
public class BuildObject {
private String objectPart1;
private String objectPart2;
private String objectPart3;
public BuildObject() {
}
public BuildObject(String objectPart1, String objectPart2, String objectPart3) {
this.objectPart1 = objectPart1;
this.objectPart2 = objectPart2;
this.objectPart3 = objectPart3;
}
public String getObjectPart1() {
return objectPart1;
}
public void setObjectPart1(String objectPart1) {
this.objectPart1 = objectPart1;
}
public String getObjectPart2() {
return objectPart2;
}
public void setObjectPart2(String objectPart2) {
this.objectPart2 = objectPart2;
}
public String getObjectPart3() {
return objectPart3;
}
public void setObjectPart3(String objectPart3) {
this.objectPart3 = objectPart3;
}
@Override
public String toString() {
return "BuildObject{" +
"objectPart1='" + objectPart1 + '\'' +
", objectPart2='" + objectPart2 + '\'' +
", objectPart3='" + objectPart3 + '\'' +
'}';
}
}
/**
* @Description: 控制对象的构建
*/
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public BuildObject makeObject(String objectPart1, String objectPart2, String objectPart3){
builder.buildPart1(objectPart1);
builder.buildPart2(objectPart2);
builder.buildPart3(objectPart3);
BuildObject object = builder.build();
return object;
}
}
/**
* @Description: 建造者模式单元测试
*/
public class Builde

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



