【学习】android开发之java设计模式(建造者模式)

172 阅读2分钟

这篇教程感觉很不错: Java设计模式:23种设计模式全面解析(超级详细)

首先看图,这个图也是来源于这个网站,表示感谢:

在互联网公司,产品都是由产品经理负责把控的。今天我就模拟项目经理做出产品的场景。我们发现不管是谁都服务于产品,也就是说产品是核心。

先看产品:

class Product {
    // 需求调研
    private String demandResearch;
    // 产品设计
    private String productDesign;
    // 技术评估
    private String technicalEvaluation;
    // 开发
    private String development;
    // 测试
    private String test;
    // 交付
    private String deliver;
    public void setDemandResearch(String demandResearch) {
        this.demandResearch = demandResearch;
    }
    public void setProductDesign(String productDesign) {
        this.productDesign = productDesign;
    }
    public void setTechnicalEvaluation(String technicalEvaluation) {
        this.technicalEvaluation = technicalEvaluation;
    }
    public void setDevelopment(String development) {
        this.development = development;
    }
    public void setTest(String test) {
        this.test = test;
    }
    public void setDeliver(String deliver) {
        this.deliver = deliver;
    }
    public void show() {
        System.out.println("随便看看");
    }
}

抽象的项目经理:

abstract class ProjectManagerBuilder {
    private Product product;
    public ProjectManagerBuilder() {
        this.product = new Product();
    }
    // 下面就是对每一项的把控阶段
    public abstract void buildDemandResearch();
    public abstract void buildProductDesign();
    public abstract void buildTechnicalEvaluation();
    public abstract void buildDevelopment();
    public abstract void buildTest();
    public abstract void buildDeliver();

    public Product getProduct() {
        return product;
    }
}

接下来是指挥者了,可以理解为公司领导:

class Leader {
    ProjectManagerBuilder builder;
    Leader(ProjectManagerBuilder builder) {
        this.builder = builder;
    }
    // 开始项目
    public Product start() {
        builder.buildDemandResearch();
        builder.buildProductDesign();
        builder.buildTechnicalEvaluation();
        builder.buildDevelopment();
        builder.buildTest();
        builder.buildDeliver();
        return builder.getProduct();
    }
}

具体的项目经理了:

class Wu extends ProjectManagerBuilder {

    @Override
    public void buildDemandResearch() {
        getProduct().setDemandResearch("好用的产品调研");
    }

    @Override
    public void buildProductDesign() {
        getProduct().setProductDesign("把产品设计好,要具有前瞻性和包容性,容错率应该高于百分之80");
    }

    @Override
    public void buildTechnicalEvaluation() {
        getProduct().setTechnicalEvaluation("使用成熟的技术方案,根据产品给出的未来设计好");
    }

    @Override
    public void buildDevelopment() {
        getProduct().setDevelopment("慢慢开发,开发好,不能以后老是打补丁");
    }

    @Override
    public void buildTest() {
        getProduct().setTest("要把每一个流程都测试好");
    }

    @Override
    public void buildDeliver() {
        getProduct().setDeliver("报告老板,项目完成了");
    }
}

接下来就是测试了:

public static void main(String[] args) {
    Wu wu = new Wu();
    Leader leader = new Leader(wu);
    Product product = leader.start();

    product.show();
}

之所以先学习这个,因为我知道 okhttp ,好像就是使用的这个。当然以后各种设计模式都会学习,只不过学习了不用很快就忘了,我会重点学习跟工作相关的。