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

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

    单例模式

    定义


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

    类图


     

    关于实现


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

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

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

    作用


    节省系统资源。 

    代理模式

    定义


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

    类图


    关于动态代理与静态代理


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

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

    作用


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

    观察者模式

    定义


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

    类图


     

    作用


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

    实现了广播通讯。 

  • 相关阅读:
    运算符重载
    vmware 下 ubuntu 不能全屏显示 的解决方法
    最优化
    常见算法(logistic回归,随机森林,GBDT和xgboost)
    转:CRF++词性标注
    条件随机场(CRF)理论及应用
    转:RNN(Recurrent Neural Networks)
    RNN(Recurrent Neural Networks)公式推导和实现
    ML、DL相关资源
    机器学习(周志华西瓜书) 参考答案 总目录
  • 原文地址:https://www.cnblogs.com/dahuandan/p/8150674.html
Copyright © 2011-2022 走看看