小言_互联网的博客

c#设计模式-结构型模式-2.桥接模式

236人阅读  评论(0)

桥接模式用于将抽象化和实现化解耦,使得两者可以独立变化。其实两个都是抽象的部分,一个事务多个维度的变化分离

在面向对象中用通俗的话说明:一个类可以通过多角度来分类,每一种分类都可能变化,那么就把多角度分离出来让各个角度都能独立变化,降低各个角度间的耦合

结构图:

例子,我们想让不同数据库版本在不同的平台上运行,当然里面的方法内容也不一样
abstraction充当我们的数据库,而implementor充当对应的平台

代码核心:在抽象化角色里利用组合引用实现化角色的接口,也就是桥梁

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 桥接模式
{
   
    //抽象化角色
    public abstract class Database
    {
   
        //利用组合方式引用平台接口,此处为不同数据库版本在不同平台上运行的桥梁
        protected PlatformImplementor _implementor;
        //初始化不同平台实现
        public Database(PlatformImplementor implementor)
        {
   
            _implementor = implementor;
        }

        public abstract void Create();
    }
    //扩展抽象化角色
    public sealed class Mysql8 : Database
    {
   
        public Mysql8(PlatformImplementor implementor) : base(implementor) {
    }
        public override void Create()
        {
   
            _implementor.Process();
        }
    }

    public sealed class Mysql7 : Database
    {
   
        public Mysql7(PlatformImplementor implementor) : base(implementor) {
    }
        public override void Create()
        {
   
            _implementor.Process();
        }
    }
    //实现化角色
    public abstract class PlatformImplementor
    {
   
        public abstract void Process();
    }
    //具体实现化角色
    public sealed class Mysql8LinuxImplementor : PlatformImplementor
    {
   
        public override void Process()
        {
   
            Console.WriteLine("mysql8针对linux平台的具体实现");
        }
    }

    public sealed class Mysql7LinuxImplementor : PlatformImplementor
    {
   
        public override void Process()
        {
   
            Console.WriteLine("mysql7针对linux平台的具体实现");
        }
    }

    class Program
    {
   
        static void Main(string[] args)
        {
   
            PlatformImplementor implementor = new Mysql7LinuxImplementor();
            Database mysql7 = new Mysql7(implementor);
            mysql7.Create();
            
        }
    }
}

桥接模式的使用场景:

当系统实现有多个角度分类,每种分类都可能变化时使用。近几年提出的微服务概念采用了桥接模式的思想,通过各种服务的组合来实现一个大的系统。

桥接模式的优点:

1.实现抽象和具体的分离,降低了各个分类角度间的耦合;

2.扩展性好,解决了多角度分类使用继承可能出现的子类爆炸问题。

桥接模式的缺点:

桥接模式的引进需要通过聚合关联关系建立抽象层,增加了理解和设计系统的难度。


转载:https://blog.csdn.net/weixin_44453949/article/details/117261765
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场