桥接模式(Bridge)
企业基本每天都有人上班,身为一名在企业上班的上班族来说,上班我们在熟悉不过了;今天我就用企业员工的上班方式跟大家讲讲桥接模式(bridge)的实现.
在企业里员工的上班方式有很多种,有走路上班的、开车上班的、坐公交上班的。每一种上班方式员工都可能使用到。每个人每天的上班方式都可能不同,对于员工来说每个人都有自己的名字,然而所使用的上班方式也在变化。在软件系统中要适应这两种变化,应该怎样实现才能应对这样的变化呢?设计模式——桥接模式就能很好的解决这样两个或多个维度的变化。
桥接模式:将抽象部分与实现部分分离,使他们都可以独立变化。——《设计模式》GOF
别的我们就不说了,还是先来看看代码的实现吧。
abstract class Fullname { public abstract void Name(); } class xiaomin : Fullname { public override void Name() { Console.WriteLine("小明"); } } class xiaozhang : Fullname { public override void Name() { Console.WriteLine("小张"); } } class xiaochen : Fullname { public override void Name() { Console.WriteLine("小陈"); } } abstract class workyya { protected Fullname full; public Fullname Full { set { full = value; } } public abstract void work(); } class workcar : workyya { public override void work() { full.Name(); Console.WriteLine("开车上班"); } } class worktransit : workyya { public override void work() { full.Name(); Console.WriteLine("坐公交上班"); } } class workWalk : workyya { public override void work() { full.Name(); Console.WriteLine("走路上班"); } }
客户端的调用
class Program { static void Main(string[] args) { workyya yya = new workcar(); yya.Full = new xiaomin(); yya.work(); Console.WriteLine("\n"); workyya yya1 = new workcar(); yya1.Full = new xiaochen(); yya1.work(); Console.WriteLine("\n"); workyya yya2 = new workWalk(); yya2.Full = new xiaozhang(); yya2.work(); Console.WriteLine("\n"); Console.Read(); } }
以上就是桥接模式的代码实现部分,后续部分“桥接模式二”明天更新
另:此文章本人已在ibc编程社区写过要想看原文请到http://www.ibcibc.com/forum.php?mod=viewthread&tid=4596