建造器模式与工厂方法类似,不过侧重点不同。工厂方法模式主要目的的组装一个产品,强调产品的初始化和设置。而建造器模式强调的是产品各部件的组装顺序(即方法调用的顺序)。
产品类产品类可以使用模板方法模式。也可以不用。
/**
* 产品接口
*/
public abstract class Product {
// A 步骤
abstract public void stepA();
// B 步骤
abstract public void stepB();
}
/**
* X 产品
*/
public class ProductX extends Product {
public void stepA(){}
public void stepB(){}
public void doSomething(){}
}
/**
* Y产品
*/
public class ProductY extends Product {
public void stepA(){}
public void stepB(){}
public void doSomething(){}
}
建造类
有多少个产品,就可以对应多少个建造器实现类。注意两个建造实现类的setPart
方法内的组装顺序不同。
/**
* 建造器接口
*/
public abstract class Builder {
// 设置产品的不同部分,以获得不同的产品
public abstract void setPart();
// 建造产品
public abstract Product buildProduct();
}
/**
* X 建造器
*/
public class ConcreteBuilderX extends Builder {
private Product product = new ProductX();
@Override
public void setPart() {
product.stepA();
product.stepB();
}
@Override
public Product buildProduct() {
return product;
}
}
/**
* Y 建造器
*/
public class ConcreteBuilderY extends Builder {
private Product product = new ProductX();
@Override
public void setPart() {
product.stepB();
product.stepA();
}
@Override
public Product buildProduct() {
return product;
}
}
导演类
导演类的作用是使客户端不直接面向建造器类,降低系统的耦合性。一个导演类就足够了,里面管理着所有的建造器。
/**
* 导演类
*/
public class Director {
private Builder builderX = new ConcreteBuilderX();
private Builder builderY = new ConcreteBuilderY();
public Product getXProduct() {
builderX.setPart();
return (Product) builderX.buildProduct();
}
public Product getYProduct() {
builderY.setPart();
return (Product) builderY.buildProduct();
}
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦