zoukankan      html  css  js  c++  java
  • 单例&代理&观察者模式

    写设计模式这一系列随笔是为了自己日后参考、复习所用,具有很大的针对性。作者学习设计模式涉及的书籍有Design Patterns、Head First Design Patterns、研磨设计模式,大家如果想深入、或者不懂之处可以从这三本书上下手。

    单例模式

    定义


    一个类只有一个实例,并提供该实例的全局访问点。 

    类图


     

    关于实现


    懒汉:使用时再创建实例,需要注意线程安全;

    饱汉:预先创建实例,需要考虑单例资源的占用是否造成浪费;

    完美: static内部类(实现延迟加载) + static初始化(解决线程安全)。

    作用


    节省系统资源。 

    代理模式

    定义


    为具体对象提供一个代理,控制对这个对象的访问。 

    类图


    关于动态代理与静态代理


    静态代理:是说代理类需要具体持有、实现被代理类的方法,当被代理接口变动时,代理类也需要做出改变;

    动态代理:代理类只有一个动态方法,通过反射动态生成被代理类的class来调用被代理类的方法。

    作用


    远程代理可以实现远程调用、虚代理节省大对象的开销、保护代理可以实现安全控制。

    观察者模式

    定义


    定义对象间一对多的关系,当目标对象发生改变时,其他观察者对象都得到通知。 

    类图


     

    作用


    解耦了目标类与具体观察者;

    实现了广播通讯。 

  • 相关阅读:
    Emoji表情编解码库XXL-EMOJI
    代码生成平台Xxl-Code-Generator
    分布式单点登录框架XXL-SSO
    分布式爬虫框架XXL-CRAWLER
    Java对象和Excel转换工具XXL-EXCEL
    API管理平台XXL-API
    分布式缓存管理平台XXL-CACHE
    不知不觉已经写了多年代码,贴一下12年写的代码,表喷哈
    memcached安装、使用
    MySQL和Redis数据一致性问题
  • 原文地址:https://www.cnblogs.com/dahuandan/p/8150674.html
Copyright © 2011-2022 走看看