设计模式之建造者模式
建造者模式
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
有一种商品,它由AB两部分组成,现在客户端需要这个商品,我们来看看客户端怎么实现的:
interface Product{
void partA();
void partB();
}
//商品A
class ProductA implements Product{
@Override
public void partA() {
System.out.println("Aa");
}
@Override
public void partB() {
System.out.println("Ab");
}
}
//商品B
class ProductB implements Product{
@Override
public void partA() {
System.out.println("Ba");
}
@Override
public void partB() {
System.out.println("Bb");
}
}
public class Client {
public static void main(String[] args) {
Product a = new ProductA();//生成A商品的对象
a.partA();
a.partB();
Product b = new ProductB();//生成B商品的对象
b.partA();
b.partB();
}
}
客户端建造了两个商品A和B,但是这里客户端必须知道这种商品是由A和B两部分组成的,就好比你想吃汉堡,你去肯德基买,难道你需要分别买汉堡的配料吗?你只是想要个汉堡而已,你应该从肯德基哪里得到一个汉堡而不必关心它是怎么做出来的。所以这个产品的具体建造细节客户端是不必知道的。
让我们稍作修改
interface Product{
void partA();
void partB();
}
class ProductA implements Product{
@Override
public void partA() {
System.out.println("Aa");
}
@Override
public void partB() {
System.out.println("Ab");
}
}
class ProductB implements Product{
@Override
public void partA() {
System.out.println("Ba");
}
@Override
public void partB() {
System.out.println("Bb");
}
}
//指挥者类 用来根据用户的需求来创建A或B商品
class Director{
public void creat(Product product){
product.partA();
product.partB();
}
}
public class Client {
public static void main(String[] args) {
Director director = new Director();
Product a = new ProductA();
director.creat(a);
Product b = new ProductB();
director.creat(b);
}
}
我们增加一个指挥者类让它去实现建造过程,客户端想要一个产品A,指挥者类就给你建造一个A,客户端不必需要知道这个A的具体建造细节。

浙公网安备 33010602011771号