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

    好处与坏处

    • 降低耦合度.

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

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

      坏处:

      会产生过多具体命令类.

    总结

    这次学习了三个模式

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/14204176.html
Copyright © 2011-2022 走看看