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

桥接模式

时间:2018-01-26 20:58:09      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:class   err   手机品牌   app   hand   private   ref   str   blog   

模式定义

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
当一个对象由多个对象组合而成,使用桥接模式能减少类数量。

UML类图

技术分享图片

  • 抽象类(Abstraction)
  • 扩展抽象类(Refined Abstraction)
  • 实现类接口(Implementor)
  • 具体实现类(Concrete Implement)

    代码结果

    public static class BridgeApp
    {
        public static void Run()
        {
            Abstraction ab = new RefinedAbstraction();
    
            ab.Implementor = new ConcreteImplementorA();
            ab.Operation();
        }
    }
    public class Abstraction
    {
        protected Implementor implementor;
    
        public Implementor Implementor
        {
            set { implementor = value; }
        }
    
        public virtual void Operation()
        {
            implementor.Operation();
        }
    }
    public interface Implementor
    {
        void Operation();
    }
    public class RefinedAbstraction : Abstraction
    {
        public override void Operation()
        {
            implementor.Operation();
        }
    }
    public class ConcreteImplementorA : Implementor
    {
        public void Operation()
        {
            Console.WriteLine("ConcreteImplementorA Operation");
        }
    }
    public class ConcreteImplementorB : Implementor
    {
        public void Operation()
        {
            Console.WriteLine("ConcreteImplementorB Operation");
        }
    }

    情景模式

    现在智能手机品牌越来越多了,其实大家都明白好的手机都是那不同的部件组装下。这里假设手机主要CPU和内存。
    ```public static class BridgeApp
    {
    public static void Run()
    {
    PhoneOne phone1 = new PhoneOne();
    phone1.Display();

        PhoneTwo phone2 = new PhoneTwo();
        phone2.Display();
    }

    }
    public class PhoneOne
    {
    private CPU _cpu = new HPCPU();
    private RAM _ram = new RAM128();

    public void Display()
    {
        Console.WriteLine("Phone one:");
        _cpu.Display();
        _ram.Display();
        Console.WriteLine("------------------------------------------");
    }

    }
    public class PhoneTwo
    {
    private CPU _cpu = new HPCPU();
    private RAM _ram = new RAM64();

    public void Display()
    {
        Console.WriteLine("Phone two:");
        _cpu.Display();
        _ram.Display();
        Console.WriteLine("------------------------------------------");
    }

    }
    public abstract class CPU
    {
    public abstract void Display();
    }
    public abstract class RAM
    {
    public abstract void Display();
    }
    public class RAM64 : RAM
    {
    public override void Display()
    {
    Console.WriteLine("RMS size is 64");
    }
    }
    public class RAM128 : RAM
    {
    public override void Display()
    {
    Console.WriteLine("RMS size is 128");
    }
    }
    public class LestinaCPU : CPU
    {
    public override void Display()
    {
    Console.WriteLine("CPU Type is LestinaCPU");
    }
    }
    public class HPCPU : CPU
    {
    public override void Display()
    {
    Console.WriteLine("CPU Type is HPCPU");
    }
    }
    ```

桥接模式

标签:class   err   手机品牌   app   hand   private   ref   str   blog   

原文地址:https://www.cnblogs.com/LoveTomato/p/8360989.html

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