学习C#设计模式(十一)桥接模式

桥接模式

using System;

namespace Bridge
{
     
    //抽象水果类
    public abstract class Fruit
    {
     
        public abstract void Plant();//抽象种植方法

    }
    //苹果类
    public class Apple : Fruit
    {
     
        //种植苹果
        public override void Plant()
        {
     
            Console.WriteLine("种植苹果!");
        }
    }
    //橘子类
    public class Orange : Fruit
    {
     
        //种植苹果
        public override void Plant()
        {
     
            Console.WriteLine("种植橘子!");
        }
    }
    //抽象果园类
    public abstract class Orchard
    {
     
        protected Fruit fruit;//水果类的引用

        //将具体的水果实例赋值给抽象水果类引用
        public Fruit Fruit {
      set {
      fruit = value; } }
        public abstract void Plant();
    }
    //北京果园
    public class BJOrchard : Orchard
    {
     
        //北京果园种植水果
        public override void Plant()
        {
     
            Console.WriteLine("北京果园!");
            fruit.Plant();
        }
    }
    //上海果园
    public class SHOrchard : Orchard
    {
     
        //上海果园种植水果
        public override void Plant()
        {
     
            Console.WriteLine("上海果园!");
            fruit.Plant();
        }
    }
    class Program
    {
     
        static void Main(string[] args)
        {
     
            Orchard bjOrchard = new BJOrchard();//创建北京果园实例
            bjOrchard.Fruit = new Apple();//创建苹果实例
            bjOrchard.Plant();//种植北京果园苹果
            bjOrchard.Fruit = new Orange();//创建橘子实例
            bjOrchard.Plant();//种植北京果园橘子

            Orchard shOrchard = new SHOrchard();//创建北京果园实例
            shOrchard.Fruit = new Apple();//创建苹果实例
            shOrchard.Plant();//种植北京果园苹果
            shOrchard.Fruit = new Orange();//创建橘子实例
            shOrchard.Plant();//种植北京果园橘子
            
            Console.ReadKey();
        }
    }
}

代码解析:
本实例代码实现了桥接模式,首先创建了抽象水果类Fruit及其派生类Apple和Orange,然后创建了抽象果园类Orchard及其派生类北京果园类BJOrchardt和上海果园类SHOrchard, Orchard类中保存了Fruit对象的引用,Fruit的引用决定了Orchard类的Plant方法调用结果,这样Orchard类并不依赖具体的Fruit类的派生类,而是依赖于抽象。实现了Fruit类的具体实现与抽象间的分离。这就是桥接模式。
说明:
桥接模式主要实现了抽象与类的实现部分的分离,它主要用于系统可以从多个角度进行分类,此时将各种分类独立出来,降低了分类之间的耦合。

你可能感兴趣的:(C#,设计模式)