大话设计模式--建造者模式

xiaoxiao2021-02-28  46

    在很多业务流程中,某一项需求是需要比如 A与B的类共同组成的,或者是生成很多复杂的算法的时候。比如

一个产品类product,需要多个部件组成。

    

package builder; 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("\n 产品 创建----"); for (String str : parts) {//列举所有的产品部件 System.out.println(str); } } }

Builder类--抽象建造者类,确定产品由两个部件PartA 和PartB组成,并声明一个获得产品结果的方法GetResult

package builder; public abstract class Builder { public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract Product getResult(); }

再创建2个具体构建类,用于生产产品的部件

package builder; public class ConcreteBuilder1 extends Builder { private Product product = new Product(); @Override public void BuildPartA() { product.Add("部件A"); } @Override public void BuildPartB() { product.Add("部件B"); } @Override public Product getResult() { return product; } } package builder; public class ConcreteBuilder2 extends Builder { private Product product = new Product(); @Override public void BuildPartA() { // TODO Auto-generated method stub product.Add("部件X"); } @Override public void BuildPartB() { // TODO Auto-generated method stub product.Add("部件Y"); } @Override public Product getResult() { // TODO Auto-generated method stub return product; } }

然后是指挥类,用于创建部件

public class Director { public void Construct(Builder builder){ builder.BuildPartA(); builder.BuildPartB(); }

然后是客户端代码,客户不用知道具体的产品生产过程,用来创建产品

public static void main(String[] args) { Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); director.Construct(b1); Product p1 = b1.getResult(); p1.Show(); director.Construct(b2); Product p2 = b2.getResult(); p2.Show(); }
转载请注明原文地址: https://www.6miu.com/read-2625354.html

最新回复(0)