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

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

    单例模式

    定义


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

    类图


     

    关于实现


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

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

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

    作用


    节省系统资源。 

    代理模式

    定义


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

    类图


    关于动态代理与静态代理


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

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

    作用


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

    观察者模式

    定义


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

    类图


     

    作用


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

    实现了广播通讯。 

  • 相关阅读:
    差一个引号的崩溃
    js中.toString()和String()的一丢丢区别
    PC端和手机端页面的一丢丢区别
    LINQ踩坑记录
    C# list group分组扩展,方法来源网络记录备忘
    NPOI分批读取数据
    Xamarin开发登录示例
    动态创建匿名对象利用表达式树动态构建分组条件
    安卓H5互调笔记
    WPF学习6
  • 原文地址:https://www.cnblogs.com/dahuandan/p/8150674.html
Copyright © 2011-2022 走看看