桥接模式——1.分类2.找联系3.继承

  桥接模式(Bridge)定义:将抽象部分与它的显示部分分离,使它们都可以独立地变化。
  桥接模式的目的是松耦合,另外也用到了合成/聚合复用原则(尽量使用合成/聚合,尽量不要使用继承)。因为继承是一种强耦合关系,所以我们优先考虑把类分好,然后找到类之间的合成/聚合关系,到最后再使用继承。

Implementor类:

    abstract  class Implementor
    {
    
    
        public abstract void Operation();//抽象方法Operation()
    }

子类:

    class ConcreteImplementorA:Implementor
    {
    
    
        public override void Operation()//重写
        {
    
    
            Console.WriteLine("具体实现A的方法执行");
        }
    }

    class ConcreteImplementorB : Implementor
    {
    
    
        public override void Operation()//重写
        {
    
    
            Console.WriteLine("具体实现B的方法执行");
        }
    }

Abstraction类:

    class Abstraction
    {
    
    
        protected Implementor implementor;//实例化父类
        public void SetImplementor(Implementor  implementor)//Implementor类作为Abstraction类的方法参数
        {
    
    
            this.implementor = implementor;
        }
        public virtual void Operation()//虚方法
        {
    
    
            implementor.Operation();
        }
    }

RefinedAbstraction类

    class RefinedAbstraction:Abstraction
    {
    
    
        public override void Operation()//重写
        {
    
    
            implementor .Operation();
        }
    }

客户端:

        static void Main(string[] args)
        {
    
    
            Abstraction ab = new RefinedAbstraction();//父类的实现指向子类的实例
            //实例化ConcreteImplementorA类的对象,通过方法SetImplementor()把值给Implementor类实例化的对象implementor
            ab.SetImplementor(new ConcreteImplementorA ());//这里也是里式转换
            ab.Operation();//执行Implementor类的对象implementor的方法Operation(),实际是执行ConcreteImplementorA类的方法Operation(),显示“实现具体的方法A”

            ab.SetImplementor(new ConcreteImplementorB());//同样操作
            ab.Operation();

            Console.Read();
        }
    }

猜你喜欢

转载自blog.csdn.net/CharmaineXia/article/details/110927054
今日推荐