• 设计模式桥接模式


    定义:

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

    关键词:

    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对象的一部分.
    合成表示一种强的拥有关系,即:体现了严格的整体-部分关系,部分和整体的生存周期一致.
  • 相关阅读:
    vue 父子组件传参
    vue中引入swiper(vue中的滑块组件vue-awesome-swiper)
    border-radius值的解析
    chrome开发工具指南(十四)
    chrome开发工具指南(十三)
    Python动态强类型解释型语言
    go基础 01
    代码发布 04
    代码发布03
    代码发布02
  • 原文地址:https://www.cnblogs.com/oneword/p/1514537.html
Copyright © 2020-2023  润新知