美文网首页Android
设计模式(2018.9.28)

设计模式(2018.9.28)

作者: 瑟闻风倾 | 来源:发表于2018-10-22 09:31 被阅读10次

一、单例模式

    1. 懒汉模式:
      1.1 双重校验锁:利用synchronized关键字防止线程冲突。
      1.2 枚举类:利用枚举类来进行统一的初始化。
      1.3 线程安全的懒汉模式:内部类的单例模式(java并发编程推荐的单例模式创建方式:内部类Holder)。
public class Configurator {
  
    private Configurator(){
        
    }

    //java并发编程推荐的单例模式创建方式:静态内部类Holder
    public Configurator getInstance(){
        return Holder.INSTANCE;
    }
    
    private static class Holder{
        private static final Configurator INSTANCE = new Configurator();
    }

}

4.懒汉模式及双重判断加同步方式:「TextToSpeechUtil」(https://www.jianshu.com/p/ba74a92afbbe)

public class TextToSpeechUtil {

    //如果面对高并发的情况,可采用懒汉模式及双重判断加同步的方式:线程安全;延迟加载;效率较高
    private static TextToSpeechUtil instance = null;
    //构造方法
    private TextToSpeechUtil(Context context){
        initTextToSpeech(context);

    }
    public static TextToSpeechUtil getInstance(Context context){
        if(instance == null){
            synchronized(TextToSpeechUtil.class){
                if(instance==null){
                    instance = new TextToSpeechUtil(context);
                }
            }
        }
        return instance;
    }

}

二、建造者模式

    1. 标准版建造者模式
    1. Android简化版建造者模式
      (1)AlertDialog源码
      (2)RestCreator
package comi.example.liy.latte.net;

import java.util.concurrent.TimeUnit;

import comi.example.liy.latte.app.ConfigeType;
import comi.example.liy.latte.app.Latte;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;

/**
 * Created by liy on 2018-10-19 15:25
 * java并发编程推荐的单例模式创建方式:内部类Holder
 * 简化的建造者模式
 */
public class RestCreator {

    private  static final class RetrofitHolder{
        private static final String BASE_URL = (String) Latte.getConfigurations().get(ConfigeType.API_HOST);
        //简化的建造者模式
        private static final Retrofit RETROFIT_CLIENT = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
    }

    private static final class OKHttpHolder{
        private static final int TIME_OUT = 60;
        private static final OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder()
                .connectTimeout(TIME_OUT,TimeUnit.SECONDS)
                .build();
    }

    //java并发编程推荐的单例模式创建方式:内部类Holder
    public static RestService getRestService(){
        return RestServiceHolder.REST_SERVICE;
    }

    private static final class RestServiceHolder{
        private static final RestService REST_SERVICE =
                RetrofitHolder.RETROFIT_CLIENT.create(RestService.class);
    }

}

相关文章

  • 设计模式(2018.9.28)

    一、单例模式 懒汉模式:1.1 双重校验锁:利用synchronized关键字防止线程冲突。1.2 枚举类:利用枚...

  • 高效能稳旋律🎶 践行第26天【一周检视】

    2018.9.28 就寝:10:50 晨起:5:30 2018.9.28 就寝:10:50 晨起...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

网友评论

    本文标题:设计模式(2018.9.28)

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