[学习笔记:设计模式] 10_桥接模式

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。


桥接模式包含如下角色:

Abstraction(抽象类):定义抽象的接口,它持有实现部分的引用,并通过这个引用调用具体实现。


RefinedAbstraction(扩充抽象类):提供更具体的逻辑。


Implementor(实现类接口):定义实现类的接口,提供基本操作,但不与抽象部分的业务逻辑相关。


ConcreteImplementor(具体实现类):实现实现者接口并定义它的具体实现。


举例
生成不同颜色的不同形状

- 抽象类

public abstract class Shape
    {
        //聚合新业务
        private IColor color;

        //构造器中初始话
        public Shape(IColor color)
        {
            this.color = color;
        }

        //原有业务(抽象方法)
        public abstract void SetShape();
    }

- 扩充抽象类(多个)

//生成圆形
public class Circle:Shape
    {
        public Circle(IColor color) : base(color)
        {
            //原有业务的方法
            SetShape();
            //其他业务的方法
            color.SetColor();
        }   

        public override void SetShape()
        {
            Console.WriteLine("设置为圆形");
        }
    }

//生成正方形
public class Square : Shape
    {
        public Square(IColor color) : base(color)
        {
            SetShape();
            color.SetColor();
        }

        public override void SetShape()
        {
            Console.WriteLine("设置为正方形");
        }
    }

- 实现类接口

public interface IColor
    {
        //声明该业务的方法
        void SetColor();
    }

- 具体实现类(多个)

//生成红色
public class Red : IColor
    {
        public void SetColor()
        {
            Console.WriteLine("设置颜色为红色");
        }
    }

//生成蓝色
public class Bule : IColor
    {
        public void SetColor()
        {
            Console.WriteLine("设置颜色为蓝色");
        }
    }


- 客户类

class Program
    {
        static void Main(string[] args)
        {
            //生成红色圆形
            Shape shape1 = new Circle(new Red());
            //生成蓝色正方形
            Shape shape2 = new Square(new Bule());
        }
    }

总结:抽象类声明初始业务的方法,并聚合其他业务(实现类接口),在构造函数中初始化;
抽象扩充类中,可调用自身业务的方法和构造函数中传入的其他业务的方法;实现类接口中,声明其他业务的方法,并在具体实现类中实现;客户在实例化对象时需传入其他业务的对象(具体实现类)。

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值