大话设计模式-建造者模式(大鸟和小菜java版)
Posted 香风智乃哈~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话设计模式-建造者模式(大鸟和小菜java版)相关的知识,希望对你有一定的参考价值。
注:因本人最近在学习大话设计模式,无奈书上的例子都是c++,本文就是把书上的例子变成Java版
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(书上定义)
代码如下:
这是产品类
package 设计模式.建造者模式;
import java.util.ArrayList;
import java.util.List;
//创建一个产品类,
public class Product {
// 定义一个容器,可以往里面添加东西
List<String> parts = new ArrayList<String>();
// 添加东西的方法
public void add(String part){
parts.add(part);
}
// 展示给用户看的方法
public void show(){
System.out.println("产品 创建---");
for (String part : parts){
System.out.println(part);
}
}
}
这是抽象建造者类
package 设计模式.建造者模式;
//该类是一个抽象类,保证产品由两个部件组成,并且声明一个得到产品建造后结果的方法getResult
public abstract class Builder {
// 本类中的方法都是抽象方法
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getResult();
}
下面两个是具体的建造者类
package 设计模式.建造者模式;
//该类是其中一个具体建造者类,并继承了其抽象类
public class ConcreteBuilder1 extends Builder{
// 创建以一个产品类的对象
private Product p = new Product();
// 重写抽象类里面的抽象方法
@Override
public void buildPartA() {
p.add("部件A");
}
@Override
public void buildPartB() {
p.add("部件B");
}
public Product getResult() {
return p;
}
}
package 设计模式.建造者模式;
//该类是另一个具体类,和上面一个具体类的功能是一样的
public class ConcreteBuilder2 extends Builder{
private Product p = new Product();
@Override
public void buildPartA() {
p.add("部件X");
}
@Override
public void buildPartB() {
p.add("部件Y");
}
@Override
public Product getResult() {
return p;
}
}
这是指挥者类
package 设计模式.建造者模式;
//指挥者类,指挥建造的过程
public class Director {
public void construct(Builder builder){
builder.buildPartA();
builder.buildPartB();
}
}
下面的是测试总类
package 设计模式.建造者模式;
//测试总类
public class Test {
public static void main(String[] args) {
// 使用多态创建具体类的对象
Builder builder1 = new ConcreteBuilder1();
Builder builder2 = new ConcreteBuilder2();
// 创建指挥者类的对象
Director director = new Director();
director.construct(builder1);
director.construct(builder2);
// 创建产品类的对象,并接收调用的方法的返回值
Product p1 = builder1.getResult();
Product p2 = builder2.getResult();
// 展示给用户观看
p1.show();
p2.show();
}
}
最后的输出结果为:
以上就是建造者模式的java代码实现啦。。
以上是关于大话设计模式-建造者模式(大鸟和小菜java版)的主要内容,如果未能解决你的问题,请参考以下文章