美文网首页
Android设计模式之建造者模式,你真的懂吗?

Android设计模式之建造者模式,你真的懂吗?

作者: 雨田Android开发 | 来源:发表于2019-07-23 09:27 被阅读0次

概念
将一个复杂对象的构建与它的表示进行分离,使得同样的构建过程可以构建不同的表示
对于用户来讲可以不关注建造过程和细节
例如构建一台电脑,我们需要选择cpu 主板,硬盘等,然后开始组装,对于我们来讲我们需要的是一台电脑,至于怎么组装的我们不在意

建造者模式主要有几个角色
产品类:表示要创建的复杂对象,它是一个具体的类
builder抽象建造者:创建产品的抽象接口,一般至少有一个创建产品的抽象方法和返回产品的抽象方法
ConcrateBuilder实际建造者:实现builder类,实现抽象的所有方法,实现具体的建造细节。
DIrector 指挥者:分配不同的建造者来创建产品,统一组装流程。
实现
1、首先创建一个具体的产品类 computer

public class Computer {

    private String cpu;//cpu
    private String disk;//硬盘
    private String board;//主板

    public String getCpu() {
        return cpu;
    }

    public void setCpu(String cpu) {
        this.cpu = cpu;
    }

    public String getDisk() {
        return disk;
    }

    public void setDisk(String disk) {
        this.disk = disk;
    }

    public String getBoard() {
        return board;
    }

    public void setBoard(String board) {
        this.board = board;
    }
}

2、定义抽象建造者 组装的所有过程

public abstract class Builder {

    public abstract void buildCPU(String cpu);//组装CPu

    public abstract void buildDisk(String disk);//组装硬盘

    public abstract void buildBoard(String board);//组装主板

    public abstract Computer create();//返回组装好的电脑
}

3、创建实际建造者,实现具体的组装过程

public class ConcreateBuilder extends Builder {
    Computer computer = new Computer();//创建产品实例
    @Override
    public void buildCPU(String cpu) {
        computer.setCpu(cpu);
    }

    @Override
    public void buildDisk(String disk) {
        computer.setDisk(disk);
    }

    @Override
    public void buildBoard(String board) {
        computer.setBoard(board);
    }

    @Override
    public Computer create() {
        return computer;
    }
}

4、定义指挥者类

public class Director {

    private ConcreateBuilder mBuilder = null;

    public Director(ConcreateBuilder builder){
        this.mBuilder = builder;
    }

    public  Computer build(String cpu,String disk,String board){
        if(mBuilder!=null){
            mBuilder.buildBoard(board);
            mBuilder.buildCPU(cpu);
            mBuilder.buildDisk(disk);
            mBuilder.create();
        }
        return null;
    }

}

5 测试方法,看实现结果

@Test
public void testBuilder(){
    ConcreateBuilder builder = new ConcreateBuilder();
    Director director = new Director(builder);
    Computer computer = director.build("Intel","硬盘","主板");
    System.out.println(computer);
}

相关文章

  • Android设计模式之建造者模式,你真的懂吗?

    概念将一个复杂对象的构建与它的表示进行分离,使得同样的构建过程可以构建不同的表示对于用户来讲可以不关注建造过程和细...

  • 建造者模式(Builder 模式)

    Android进阶之设计模式 建造者模式( Builder 模式) 定义:将一个复杂对象的构建与它的表示分离,使得...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • Android设计模式之建造者模式

    建造者模式 1.定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建出不同的表示。 2.使用场景...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

网友评论

      本文标题:Android设计模式之建造者模式,你真的懂吗?

      本文链接:https://www.haomeiwen.com/subject/pmbnlctx.html