您的位置:首页 > 产品设计 > UI/UE

Java设计模式--构建者模式(Builder)

2017-11-06 23:48 585 查看

构造性模式:

一般情况下iain,需要为自己开发的类提供构造函数使其能够被初始化。这些构造函数相互协作,并且类种的每个构造函数最终都会去带调用超类的构造函数。

调用构造函数的方式有两种:

使用new操作符

使用发射来初始化和使用对象



构造者模式

创建一个对象时,并不一定拥有创建该对象的全部信息.而是需要逐步的获得创建对象的信息,更方便的做法就时分步骤构建对象。

意图:将类的构建逻辑转移到类的实例化外部。


引入构造者模式,就可以提供一个中间对象来存储数据,直到准备好所有数据后,再根据中间对象的数据来构建目标对象。



小结:

构建者关注目标类的构建过程,目标类关注合法实例的业务本身。好处时在实例化目标类前,确保得到的是一个有效的对象,并且不会让构建逻辑出现在目标类本身。

构造者构建类对象的过程通常是分步骤的,这使得该模式通常被应用于解析文本以创建对象的场景。



代码如下:

package website.dengta.builder;

/**
* @author www.dengta.website
* @date 2017-11-06 23:25
*/
public class Product {
public Product() {
System.out.println("product is init");
}
}


package website.dengta.builder;

public abstract class Builder {
Product product = new Product();

public abstract void builderPartA();
public abstract void builderPartB();
public abstract void builderPartC();

public abstract Product getResult();
}


package website.dengta.builder;

/**
* @author www.dengta.website
* @date 2017-11-06 23:25
*/
public class ConcreteBuilder extends Builder {

private Product product = new Product();

@Override
public void builderPartA() {
System.out.println("组装A");
}

@Override
public void builderPartB() {
System.out.println("组装B");
}

@Override
public void builderPartC() {
System.out.println("组装C");
}

@Override
public Product getResult() {
return product;
}
}


package website.dengta.builder;

/**
* @author www.dengta.website
* @date 2017-11-06 23:33
*/
public class Director {
private Builder builder;

public Director(Builder builder) {
this.builder = builder;
}

public void construct(){
builder = new ConcreteBuilder();
builder.builderPartA();
builder.builderPartB();
builder.builderPartC();
builder.getResult();
}
}


package website.dengta.builder;

/**
* @author www.dengta.website
* @date 2017-11-06 23:35
*/
public class TestCient {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);

director.construct();
}

}


a0db
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: