设计模式——Bridge模式

6        Bridge模式

6.1      概述

Bridage模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。

6.2      设计

思路简单理解就是:在类中抽离方法形成另一个类。比如对于动物狗,有行走功能。一般我们设计时,把狗设计成一个类,里面有方法“行走”。那么Bridge模式就是把“行走”方法从“狗”类中抽离出来,形成“行走”类,并在“狗”类中使用这个“行走”对象,实现行走功能。这样,“狗”类和“行走”类都可以独立变化。

6.3      实现

UML图:
《设计模式——Bridge模式》

示例代码为:

 1《设计模式——Bridge模式》using System;
 2《设计模式——Bridge模式》
 3《设计模式——Bridge模式》namespace Example
 4《设计模式——Bridge模式》《设计模式——Bridge模式》《设计模式——Bridge模式》{
 5《设计模式——Bridge模式》《设计模式——Bridge模式》    /**//// <summary>
 6《设计模式——Bridge模式》    /// 示例
 7《设计模式——Bridge模式》    /// </summary>
 8《设计模式——Bridge模式》    class Example
 9《设计模式——Bridge模式》《设计模式——Bridge模式》    《设计模式——Bridge模式》{
10《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
11《设计模式——Bridge模式》        /// 应用程序的主入口点。
12《设计模式——Bridge模式》        /// </summary>
13《设计模式——Bridge模式》        [STAThread]
14《设计模式——Bridge模式》        static void Main(string[] args)
15《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
16《设计模式——Bridge模式》            Run r = new Run() ;//狗跑
17《设计模式——Bridge模式》            Dog a = new Dog( r ) ;
18《设计模式——Bridge模式》            Console.Write( Dog can  ) ;
19《设计模式——Bridge模式》            a.Move() ;
20《设计模式——Bridge模式》
21《设计模式——Bridge模式》            Fly f = new Fly() ;//鸟飞
22《设计模式——Bridge模式》            Bird b = new Bird( f ) ;
23《设计模式——Bridge模式》            Console.Write( Bird can  ) ;
24《设计模式——Bridge模式》            b.Move() ;
25《设计模式——Bridge模式》        }
26《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
27《设计模式——Bridge模式》        /// 动物(抽象部分)
28《设计模式——Bridge模式》        /// </summary>
29《设计模式——Bridge模式》        public class Animal
30《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
31《设计模式——Bridge模式》            protected Movement move = null ;
32《设计模式——Bridge模式》        
33《设计模式——Bridge模式》            public Animal( Movement m )
34《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
35《设计模式——Bridge模式》                move = m ;
36《设计模式——Bridge模式》            }
37《设计模式——Bridge模式》            public virtual void Move()
38《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
39《设计模式——Bridge模式》                move.Move() ;
40《设计模式——Bridge模式》            }
41《设计模式——Bridge模式》        }
42《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
43《设计模式——Bridge模式》        /// 狗
44《设计模式——Bridge模式》        /// </summary>
45《设计模式——Bridge模式》        public class Dog : Animal
46《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
47《设计模式——Bridge模式》《设计模式——Bridge模式》            public Dog( Movement m ) : base( m ) 《设计模式——Bridge模式》{}
48《设计模式——Bridge模式》            public override void Move()//狗运动
49《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
50《设计模式——Bridge模式》                move.Move() ;
51《设计模式——Bridge模式》            }
52《设计模式——Bridge模式》        }
53《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
54《设计模式——Bridge模式》        /// 鸟
55《设计模式——Bridge模式》        /// </summary>
56《设计模式——Bridge模式》        public class Bird : Animal
57《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
58《设计模式——Bridge模式》《设计模式——Bridge模式》            public Bird( Movement m ) : base( m ) 《设计模式——Bridge模式》{}
59《设计模式——Bridge模式》            public override void Move()//鸟运动
60《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
61《设计模式——Bridge模式》                move.Move() ;
62《设计模式——Bridge模式》            }
63《设计模式——Bridge模式》        }
64《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
65《设计模式——Bridge模式》        /// 运动(实现部分)
66《设计模式——Bridge模式》        /// </summary>
67《设计模式——Bridge模式》        public class Movement
68《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
69《设计模式——Bridge模式》《设计模式——Bridge模式》            public Movement() 《设计模式——Bridge模式》{}
70《设计模式——Bridge模式》            public virtual void Move()
71《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
72《设计模式——Bridge模式》                Console.WriteLine( Move ) ;
73《设计模式——Bridge模式》            }
74《设计模式——Bridge模式》        }
75《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
76《设计模式——Bridge模式》        /// 具体的运动——跑
77《设计模式——Bridge模式》        /// </summary>
78《设计模式——Bridge模式》        public class Run : Movement
79《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
80《设计模式——Bridge模式》《设计模式——Bridge模式》            public Run() 《设计模式——Bridge模式》{}
81《设计模式——Bridge模式》            public override void Move()
82《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
83《设计模式——Bridge模式》                Console.WriteLine( Run ) ;
84《设计模式——Bridge模式》            }
85《设计模式——Bridge模式》        }
86《设计模式——Bridge模式》《设计模式——Bridge模式》        /**//// <summary>
87《设计模式——Bridge模式》        /// 具体的运动——飞
88《设计模式——Bridge模式》        /// </summary>
89《设计模式——Bridge模式》        public class Fly : Movement
90《设计模式——Bridge模式》《设计模式——Bridge模式》        《设计模式——Bridge模式》{
91《设计模式——Bridge模式》《设计模式——Bridge模式》            public Fly() 《设计模式——Bridge模式》{}
92《设计模式——Bridge模式》            public override void Move()
93《设计模式——Bridge模式》《设计模式——Bridge模式》            《设计模式——Bridge模式》{
94《设计模式——Bridge模式》                Console.WriteLine( Fly ) ;
95《设计模式——Bridge模式》            }
96《设计模式——Bridge模式》        }
97《设计模式——Bridge模式》    }
98《设计模式——Bridge模式》}
99《设计模式——Bridge模式》

    原文作者:设计模式
    原文地址: http://www.cnblogs.com/fengchao/archive/2005/08/03/206971.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞