美文网首页
java:设计思想总结

java:设计思想总结

作者: 我在等你回复可你没回 | 来源:发表于2020-09-24 12:09 被阅读0次

随着写代码越来越多,感觉整个架构设计还是挺重要的。记录一下

一.链式调用思想

发现很多架构都使用链式调用,最经典就是Rxjava了。其实这是一种builder模式。builder模式呢,就是每调用一个方法,仍然返回builder,直到调用build方法才返回需要构建的对象,例如下面代码,

package com.clj.fastble.scan;


import com.clj.fastble.BleManager;

import java.util.UUID;

public class BleScanRuleConfig {

    private UUID[] mServiceUuids = null;
    private String[] mDeviceNames = null;
    private String mDeviceMac = null;
    private boolean mAutoConnect = false;
    private boolean mFuzzy = false;
    private long mScanTimeOut = BleManager.DEFAULT_SCAN_TIME;

    public UUID[] getServiceUuids() {
        return mServiceUuids;
    }

    public String[] getDeviceNames() {
        return mDeviceNames;
    }

    public String getDeviceMac() {
        return mDeviceMac;
    }

    public boolean isAutoConnect() {
        return mAutoConnect;
    }

    public boolean isFuzzy() {
        return mFuzzy;
    }

    public long getScanTimeOut() {
        return mScanTimeOut;
    }

    public static class Builder {

        private UUID[] mServiceUuids = null;
        private String[] mDeviceNames = null;
        private String mDeviceMac = null;
        private boolean mAutoConnect = false;
        private boolean mFuzzy = false;
        private long mTimeOut = BleManager.DEFAULT_SCAN_TIME;

        public Builder setServiceUuids(UUID[] uuids) {
            this.mServiceUuids = uuids;
            return this;
        }

        public Builder setDeviceName(boolean fuzzy, String... name) {
            this.mFuzzy = fuzzy;
            this.mDeviceNames = name;
            return this;
        }

        public Builder setDeviceMac(String mac) {
            this.mDeviceMac = mac;
            return this;
        }

        public Builder setAutoConnect(boolean autoConnect) {
            this.mAutoConnect = autoConnect;
            return this;
        }

        public Builder setScanTimeOut(long timeOut) {
            this.mTimeOut = timeOut;
            return this;
        }

        void applyConfig(BleScanRuleConfig config) {
            config.mServiceUuids = this.mServiceUuids;
            config.mDeviceNames = this.mDeviceNames;
            config.mDeviceMac = this.mDeviceMac;
            config.mAutoConnect = this.mAutoConnect;
            config.mFuzzy = this.mFuzzy;
            config.mScanTimeOut = this.mTimeOut;
        }

        public BleScanRuleConfig build() {
            BleScanRuleConfig config = new BleScanRuleConfig();
            applyConfig(config);
            return config;
        }

    }


}

Builder内作为静态的内部类。
使用方法如下:

        BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder()
                .setServiceUuids(serviceUuids)      // 只扫描指定的服务的设备,可选
                .setDeviceName(true, names)   // 只扫描指定广播名的设备,可选
                .setDeviceMac(mac)                  // 只扫描指定mac的设备,可选
                .setAutoConnect(isAutoConnect)      // 连接时的autoConnect参数,可选,默认false
                .setScanTimeOut(10000)              // 扫描超时时间,可选,默认10秒
                .build();

相关文章

  • java:设计思想总结

    随着写代码越来越多,感觉整个架构设计还是挺重要的。记录一下 一.链式调用思想 发现很多架构都使用链式调用,最经典就...

  • Java学习书

    《Java编程思想》 《大话设计模式》 《重构 改善既有代码的设计》,《effective java》 《深入理解...

  • java编程思想 第二章学习笔记

    java编程思想 第二章总结 一切皆对象 java是基于C++之上来设计的,简化了C++中的复杂性和高昂的学习成本...

  • 深度解读 java 线程池设计思想及源码实现

    深度解读 java 线程池设计思想及源码实现

  • Java 技术栈

    1、Java基础 Leetcode 刷题、Java 编程思想、JVM 原理、设计模式、Java 8 新特性 2、项目经验

  • 要点1 Java相关

    1. 熟练掌握Java技术,熟悉面向对象思想,熟悉常用设计模式; 面向对象思想: 继承, 封装, 多态 设计模式:...

  • 深度解读 java 线程池设计思想及源码实现

    深度解读 java 线程池设计思想及源码实现 转载

  • 设计模式

    设计模式之旅 图说设计模式 小猪的设计模式初涉总结 Java之美[从菜鸟到高手演变]之设计模式 Java之美[从菜...

  • 自己总结

    Java性能权威指南(3) Java编程思想 (1) 深入理解Java虚拟机 (2) 大话设计模式 (2) 重构 ...

  • Java编程思想总结

    很久没有更新简书了,最近也发生了很多事情,当一切告一段落的时候,继续回炉重造。接下来的半年准备把自己的编程能力进一...

网友评论

      本文标题:java:设计思想总结

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