zoukankan      html  css  js  c++  java
  • 设计模式网上资料整合理解——结构型模式

    桥接模式(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();
        }
      
      }

    }

  • 相关阅读:
    sql语句开发使用---update
    获取弹出框的句柄,关闭弹出框
    水晶报表使用,解决相同数据库不同服务器使用同一个水晶报表模板问题?
    第一章 什么是SQL Server Integration Services (ssis) 系统。
    在 win 10 中使用sql 2012 附加低版本数据失败的解决办法。
    窗体间传值 委托应用
    有点小激动
    Adam
    SVN Unable to connect to a repository at URL问题解决
    C#基础---IComparable用法,实现List<T>.sort()排序
  • 原文地址:https://www.cnblogs.com/end/p/729285.html
Copyright © 2011-2022 走看看