谈谈设计模式里的桥接模式(Bridge Pattern)

作者:上海建筑防水有限公司  来源:www.yxjzfs.com   发布时间:2017-09-15 10:43:11
谈谈设计模式里的桥接模式(Bridge Pattern)

学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出.
生活中的一个例子:
就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化?怎样实现才能应对这种变化呢?
概述:
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
意图:
   将抽象部分与实现部分分离,使它们都可以独立的变化。
——《设计模式》GOF
结构图:

\


传统的做法:
通过类继承的方式来做上面的例子;
先看一下类结构图:

\


代码实现:

1namespaceCarRunOnRoad
2{
3//路的基类;
4publicclassRoad
5{
6publicvirtualvoidRun()
7{
8Console.WriteLine("在路上");
9}
10}
11//高速公路;
12publicclassSpeedWay:Road
13{
14publicoverridevoidRun()
15{
16Console.WriteLine("高速公路");
17}
18}
19//市区街道;
20publicclassStreet:Road
21{
22publicoverridevoidRun()
23{
24Console.WriteLine("市区街道");
25}
26}
27//小汽车在高速公路上行驶;
28publicclassCarOnSpeedWay:SpeedWay
29{
30publicoverridevoidRun()
31{
32Console.WriteLine("小汽车在高速公路上行驶");
33}
34}
35//公共汽车在高速公路上行驶;
36publicclassBusOnSpeedWay:SpeedWay
37{
38publicoverridevoidRun()
39{
40Console.WriteLine("公共汽车在高速公路上行驶");
41}
42}
43//小汽车在市区街道上行驶;
44publicclassCarOnStreet:Street
45{
46publicoverridevoidRun()
47{
48Console.WriteLine("汽车在街道上行驶");
49}
50}
51//公共汽车在市区街道上行驶;
52publicclassBusOnStreet:Street
53{
54publicoverridevoidRun()
55{
56Console.WriteLine("公共汽车在街道上行驶");
57}
58}
59
60}


客户端调用:

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:荆州网站建设 http://jingzhou.45qun.com


上一篇:JavaWeb- JDBC编程进阶(自定义数据源+开源数据源:DBC
下一篇:最后一页