码迷,mamicode.com
首页 > 其他好文 > 详细

桥接模式

时间:2020-01-20 09:16:30      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:建立   体绘制   实现   技术   ace   public   ons   class   string   

,抽象类与具体的实现类在结构上是相互独立的,两者的相互变化并不会影响到彼此,只要“桥梁”没变,两者的变化并不会影响到彼此。桥接模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

参照菜鸟教程的桥接模式,具体实现如下图所示

技术图片

  #region 圆设置类
    class CircleSet
    {
        public CircleSet(int _radius)
        {
            radius = _radius;
        }
        public int radius { get; set; }
    }
    #endregion
 #region 绘制接口
    interface DrawAPI
    {
        void DrawCircle(CircleSet circleset);
    }
    #endregion
 #region 具体绘制类
    class RedCircle : DrawAPI
    {
        public void DrawCircle(CircleSet circleset)
        {
            Console.WriteLine("draw circle radius:{0} ; color:red", circleset.radius);
        }
    }
    class GreenCircle : DrawAPI
    {
        public void DrawCircle(CircleSet circleset)
        {
            Console.WriteLine("draw circle radius:{0} ; color:green", circleset.radius);
        }
    }
    #endregion
    #region 具体实现类
    class Circle : Shape
    {
        private CircleSet _circleset;
        public Circle(DrawAPI drawapi, CircleSet circleset) : base(drawapi)
        {
            _circleset = circleset;
        }
        public override void Draw()
        {
            _drawapi.DrawCircle(_circleset);
        }
    }
    #endregion
 static void Main(string[] args)
        {
            DrawAPI da_red = new RedCircle();
            Shape shape = new Circle(da_red,new CircleSet(10));
            shape.Draw();
            Console.ReadKey();
        }

技术图片

 

桥接模式实现是:具体实现类继承自桥接而不直接继承实现类的抽象类,抽象类与具体的实现类在结构上是相互独立的,两者的相互变化并不会影响到彼此,只要“桥梁”没变,两者的变化并不会影响到彼此。

就以上教程的实例程序来说,具体的实现是RedCircle、GreenCircle,它们的抽象类为Shape,按一般逻辑来说,我们是直接继承Shape来创建不同的具体对象,但桥接模式中是通过“桥梁”DrawAPI建立抽象与具体实现之间的联系,调用DrawAPI中的方法来具体实现。

 

巧妙的点就在于实现类通过桥接调用具体,那些继承接口的实现类的调用借助桥接来实现,从而解除耦合

桥接模式

标签:建立   体绘制   实现   技术   ace   public   ons   class   string   

原文地址:https://www.cnblogs.com/ningxinjie/p/12216451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!