美文网首页书摘技术干货Java学习笔记
《HeadFirst设计模式》书摘-单例/命令/适配器/外观

《HeadFirst设计模式》书摘-单例/命令/适配器/外观

作者: GhostStories | 来源:发表于2017-06-15 16:39 被阅读27次

    欢迎访问我的博客:http://wangnan.tech

    单例模式

    定义

    确保一个类只有一个实例,并提供全局访问点

    要点

    • 单例模式也提供访问这个实例的全局点
    • 在java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量
    • 确定在性能和资源上的限制,然后小心地选择适当的方案来实现单例模式,以解决多线程问题
    • 小心,如果使用多个类加载器,可能导致单件失效而产生多个实例
    • 如果使用jvm1 2或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收

    命令模式

    定义

    将请求封装成对象,这可以让你使用不用的请求,队列,或者日志请求来参数化其他对象,命令模式也可以支持撤销操作

    要点

    • 命令模式将发出请求的对象和执行请求的对象解耦
    • 在被解耦的两者之间是通过命令对象进行沟通的,命令对象封装了接受者和一个或一组动作
    • 调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用
    • 调用者可以接受命令当做参数甚至在运行时动态的进行
    • 命令可以支持撤销,做法是实现一个undo方法来来回到execute()地执行的状态
    • 宏命令是命令的一种简单的延伸,允许调用多个命令,宏方法也可以支持注销
    • 实际操作时,很常见用“聪明”命令模式,就是直接实现了请求,而不是将工作委托给接收者
    • 命令模式也可以用来实现日志和实务系统

    适配器模式/外观模式

    适配器模式定义

    将一个类的接口,转换成客户期望另一个接口,适配器让原来不兼容的类可以工作无间

    外观模式定义

    提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用

    get到的oo原则

    只和朋友交谈

    要点

    • 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器
    • 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观模式
    • 适配器改变接口以符合客户的期望
    • 外观将客户从一个复杂的子系统中解耦
    • 实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小和复杂度而定
    • 实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行
    • 适配器模式有两种形式:对象适配器和类适配器,类适配器需要用到多重继承
    • 你可以为一个子系统实现一个以上的外观
    • 适配器将一个对象包装起来以改变其接口,装饰者将一个对象包装起来以增加新的行为和责任,而外观将一群对象包装起来以简化其接口

    相关文章

      网友评论

        本文标题:《HeadFirst设计模式》书摘-单例/命令/适配器/外观

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