美文网首页Android设计模式
Android设计模式-2-建造者模式

Android设计模式-2-建造者模式

作者: 今阳说 | 来源:发表于2020-12-28 09:50 被阅读0次

1. 定义:

  • 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

  • 在用户不知道对象的建造过程和细节的情况下,可以直接创建复杂的对象。

2. 优缺点

  • 优点:隐藏复杂的实现细节,易于解耦,方便扩展

  • 缺点:当产品内部变化复杂,产品间差异较大时,不适合使用建造者模式

3. Android源码中的体现

AlertDialog,Notification的Builder,StringBuilder, StringBuffer 等,这些都是我们日常开发中经常会用到的

4. 实例演示

下面结合一个实例来分析一下建造者模式的原理,以组装手机为例:

  1. 首先是定义一个手机的基类,包含一些手机的共有属性和方法;
abstract class MobilePhone {
        protected String cpu;
        protected String ram;
        protected String os;

        protected MobilePhone() {

        }

        public abstract void setCPU();

        public void setRAM(String ram) {
            this.ram = ram;
        }

        public void setOS(String os) {
            this.os = os;
        }

        @Override
        public String toString() {
            return "MobilePhone{" +
                    "cpu='" + cpu + '\'' +
                    ", ram=" + ram +
                    ", os='" + os + '\'' +
                    '}';
        }
    }
  1. 创建具体的实现类,如华为手机,实现了基类的抽象方法,并扩展增加了AI智能芯片
 class HuaWeiPhone extends MobilePhone {
        protected String aiCpu;

        protected HuaWeiPhone() {

        }

        @Override
        public void setCPU() {
            this.cpu = "麒麟970";
        }

        public void setAiCpu(String aiCpu) {
            this.aiCpu = aiCpu;
        }

        @Override
        public String toString() {
            return "HuaWeiPhone{" +
                    "cpu='" + cpu + '\'' +
                    ", ram=" + ram +
                    ", os='" + os + '\'' +
                    ", aiCpu='" + aiCpu + '\'' +
                    '}';
        }
    }
  1. 创建一个建造者的基类,通过范型控制要构造的实例类型
abstract class PhoneBuilder <T extends MobilePhone> {
        protected T phone
        public abstract void buildRAM(int ram);

        public abstract void buildOS(String os);

        public abstract T build();
    }
  1. 创建华为手机的建造者
class HuaWeiBuilder extends PhoneBuilder {
        HuaWeiParam mHuaWeiParam;
        private HuaWeiPhone huaWeiPhone;

        public HuaWeiBuilder() {
            mHuaWeiParam = new HuaWeiParam();
        }

        public HuaWeiBuilder buildAICPU(boolean isSupportAi) {
            if (isSupportAi) {
                mHuaWeiParam.aiCpu = "麒麟AI芯片";
            }
            return this;
        }

        @Override
        public HuaWeiBuilder buildRAM(int ram) {
            mHuaWeiParam.ram = String.format("AMD-007 %dG", ram);
            return this;
        }

        @Override
        public HuaWeiBuilder buildOS(String os) {
            mHuaWeiParam.os = os;
            return this;
        }

        @Override
        public HuaWeiPhone build() {
            huaWeiPhone = new HuaWeiPhone();
            huaWeiPhone.setCPU();
            huaWeiPhone.setOS(mHuaWeiParam.os);
            huaWeiPhone.setRAM(mHuaWeiParam.ram);
            huaWeiPhone.setAiCpu(mHuaWeiParam.aiCpu);
            return huaWeiPhone;
        }

        class HuaWeiParam {
            String aiCpu;
            String os;
            String ram;
        }
    }
  1. 使用Builder构建手机实例,如下程序,构造不同型号的华为手机就非常方便了
 private void methodBuilderPattern() {
        HuaWeiPhone huaWeiP20=new HuaWeiBuilder()
                .buildOS("android 9.0")
                .buildRAM(6)
                .buildAICPU(false)
                .build();
        HuaWeiPhone huaWeiMate40=new HuaWeiBuilder()
                .buildOS("Harmony 1.0")
                .buildRAM(8)
                .buildAICPU(true)
                .build();
    }

我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章

相关文章

  • Android设计模式-2-建造者模式

    1. 定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 在用户不知道对象的建造过程...

  • Android设计模式-2-建造者模式

    1. 定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 在用户不知道对象的建造过程...

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

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

  • Android常用设计模式有哪些?

    Android常用设计模式有哪些? 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

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

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 (1)Build模式创建实例 定义一个...

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

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

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

    背景:小王去商城购买一台组装的台式机。执行过程1、电脑商城的老板(Director)向小王询问需求。(打游戏、办公...

  • 建造者模式(Builder 模式)

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

  • Android中涉及的模式

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

网友评论

    本文标题:Android设计模式-2-建造者模式

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