zoukankan      html  css  js  c++  java
  • 设计模式桥接模式

    定义:

    将抽象部分与它的实现部分分离,使它们能够独立的变化.

    关键词:

    bridge

    结构图:

    image

    应用场景:

    实现系统可能有多角度分类,而且每一种分类都有变化时,那么把这种多角度分离出来,就可以让他们独立变化,减少它们之间的耦合.

    例子:

    类图:

    image

    代码:
    public class Tel
    {
        protected string name;
        protected Game game;
        public Tel(string name, Game game)
    	{
            this.name = name;
            this.game = game;
    	}
    
        public void SetGame(Game game)
        {
            this.game = game;
        }
    
        public void Run()
        {
            HttpContext.Current.Response.Write(name+"-");
            game.Run();
        }
    }
    
    public class TelM : Tel
    {
        public TelM(string name, Game game)
            : base(name, game)
        {
            
        }
    }
    
    public class TelN : Tel
    {
        public TelN(string name, Game game)
            : base(name, game)
        {
    
        }
    }
    
    public abstract class Game
    {
        public abstract void Run();
    }
    
    public class Game1 : Game
    {
        public override void Run()
        {
            HttpContext.Current.Response.Write("魂斗罗 is Runing!<br/>");
        }
    }
    
    public class Game2 : Game
    {
        public override void Run()
        {
            HttpContext.Current.Response.Write("坦克 is Runing!<br/>");
        }
    }

    页面调用:

        protected void Page_Load(object sender, EventArgs e)
        {
            Game g1 = new Game1();
            Game g2 = new Game2();
            Tel t1 = new TelM("苹果", g1);
            Tel t2 = new TelM("诺基亚", g1);
            t1.Run();
            t2.Run();
            
            Response.Write("<hr/>");
    
            t1.SetGame(g2);
            t2.SetGame(g2);
            t1.Run();
            t2.Run();
    
        }
    效果:
    image 
    设计原则:
    合成/聚合复用原则:尽量使用合成/聚合,而不要使用是使用类继承.
    聚合表示一种弱的拥有关系,即:A对象可以包含B对象,但B不是A对象的一部分.
    合成表示一种强的拥有关系,即:体现了严格的整体-部分关系,部分和整体的生存周期一致.
  • 相关阅读:
    程序员面试笔试——链表题目总结分析
    Java实现约瑟夫环
    Java关键字final、static
    test
    Blog 转移
    kali 国内镜像源,以及PD_tools,Vm_tools的安装
    Ubuntu 安装启动Tomcat
    JDK 安装环境配置(ubuntu)
    Python 正则表达式
    Python MySQLdb Mac安装遇到的问题
  • 原文地址:https://www.cnblogs.com/oneword/p/1514537.html
Copyright © 2011-2022 走看看