zoukankan      html  css  js  c++  java
  • 《大话设计模式》读书笔记(七)

    写在前面

    本文上接《大话设计模式》读书笔记(六),这次来学习单例模式、桥接模式、命令模式。

    14.单例模式(Singleton Pattern)

    解决的问题

    单例模式可以创建一个类的全局唯一的实例,使得资源得到节约。

    类图结构

    image-20201228221905595

    这个类图很简单,只有一个Singleton类:

    class Singleton{
        private static Singleton instance;
        
        private Singleton(){
            
        }
        public static Singleton GetInstance(){
            if(instance == null){
                instance = new Singleton();
            }
            return instance;
        }
    }
    

    好处与坏处

    单例模式的好处十分明显,单例模式可以严格的控制唯一实例的受控访问。但缺点在于不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。

    15.桥接模式(Bridge Pattern)

    解决的问题

    可以把抽象和实现分离,桥接模式解决的是类属性多维度变化问题,把类的抽象层次结构和类的实现层级结构解耦。

    类图结构

    image-20201228223033481

    这个类图看着还是比较复杂的,首先是一个Abstraction类,代表抽象,Implementor代表实现类,RefinedAbstraction代表被提炼的抽象,ConcreteImplementorA和B代表两个具体的实现。

    Implementor类:

    abstract class Implementor{
        public abstract void Operation()
    }
    

    ConcreteImplementorA 和 ConcreteImplementorB类:

    class ConcreateImplementorA : Implementor{
        public override void Operation(){
            Console.WriteLine("具体实现A的方法执行");
        }
    }
    class ConcreateImplementorB : Implementor{
        public override void Operation(){
            Console.WriteLine("具体实现B的方法执行");
        }
    }
    

    Abstract类:

    class Abstraction{
        protected Implementor implementor;
        public void SetImplementor(Implementor implementor){
            this.implementor = implementor;
        }
        public virtual void Operation(){
            implementor.Operation();
        }
    }
    

    RefinedAbstraction类:

    class RefinedAbstraction : Abstraction{
        public override void Operation(){
            implementor.Operation();
        }
    }
    

    好处与坏处

    桥接模式的好处,就在于能够把这种多维度的变化分离出来独立变化,减少他们的耦合。但缺点是会使得系统变得很复杂,更加难以维护。

    16.命令模式(Command Pattern)

    解决的问题

    命令模式,将一个请求封装成一个对象,可以降低耦合度,更加容易扩展。适用于发起的命令比较复杂的情况。

    类图结构

    image-20201228224918207

    好处与坏处

    • 降低耦合度.

    • 新增一个命令/一组命令简单.

    • 调用同一方法实现不同功能.

      坏处:

      会产生过多具体命令类.

    总结

    这次学习了三个模式

  • 相关阅读:
    截图片
    C#根据字节数截取字符串
    学习ObjectiveC: 入门教程
    [原]32位libusb
    [转]vim下鼠标右键无法复制的解决
    [原]c语言问号表达式
    [转]Linux下的帧缓冲lcd应用编程及Framebuffer驱动程序模型
    [转] android移植详解
    [转]Linux 串口编程
    curl 使用代理
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/14204176.html
Copyright © 2011-2022 走看看