• 设计模式网上资料整合理解——结构型模式


    桥接模式(Bridge)
          桥接模式用于解决系统多维度变化的问题,将抽象部分与实现部分分离,使它们都可以独立的变化。(参见对Bridge模式的理解
    结构图:
          
    生活中的例子:
          
          

    组合模式(Composite)

    意图:
          将对象组合成树形结构以表示“部分
    -整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。[GOF 《设计模式》]
    生活中的例子:
          组合模式最佳例子是.NET的控件树,具体参考张逸的《设计之道》,或看.NET控件源码。
    结构图:
          

    享原模式(FlyWeight)
          当在一个线程中需要创建一个类的很多实例,而这个类的实例之间只是某些状态不同,就可以考虑是否可以将类中实例化后不同的部分提取出来,以使剩余的部分得以共享,减少内存开销。这种解决方法就是享原模式,它主要是解决上面提到的性能问题。

    结构图:
          

    代理模式(Proxy)

    结构图:
          
    代码:

    using System;

    namespace DoFactory.GangOfFour.Proxy.Structural
    {
      
      
    // MainApp test application 

      
    class MainApp
      
    {
        
    static void Main()
        
    {
          
    // Create proxy and request a service 
          Proxy proxy = new Proxy();
          proxy.Request();

          
    // Wait for user 
          Console.Read();
        }

      }


      
    // "Subject" 

      
    abstract class Subject 
      
    {
        
    public abstract void Request();    
      }


      
    // "RealSubject" 

      
    class RealSubject : Subject
      
    {
        
    public override void Request()
        
    {
          Console.WriteLine(
    "Called RealSubject.Request()");
        }

      }


      
    // "Proxy" 

      
    class Proxy : Subject
      
    {
        RealSubject realSubject;

        
    public override void Request()
        
    {
          
    // Use 'lazy initialization' 
          if (realSubject == null)
          
    {
            realSubject 
    = new RealSubject();
          }


          realSubject.Request();
        }
      
      }

    }

  • 相关阅读:
    python使用阿里云oss-sdk
    flask-文件上传的使用
    flask-migrate的基本使用
    flask-script的基本使用
    flask-sqlalchemy的基本使用
    alembic的常用参数
    sqlchemy查询的其他操作
    orm层面的删除的注意事项
    C#获取数据库中的Instance
    SOA Demo
  • 原文地址:https://www.cnblogs.com/end/p/729285.html
Copyright © 2020-2023  润新知