桥接模式(Bridge Pattern)

      桥接模式是一种结构型模式(structural pattern)用于解决系统设计中两个或多个维度的变化,从而实现各自维度的独立扩展,而不影响到使用客户
下面用一个坦克游戏的示例演示了桥接模式的使用场景(这款游戏前期准备在window、linux上运营,以后可能会在手机、苹果机等等运行)
示例中的类型与结构图中的对应关系
TankGameApp = Client
Tank = Abstraction
Tank70(Tank90) = RefinedAbstraction
Platform = Implementor
NTPlatform = ConcreteImplementorA
LinuxPlatform = ConcreteImplementorB
     public   class  TankGameApp
    {
        
public   static   void  Main()
        {
            
// 如果在NT平台下使用该游戏
            NTPlatform ntPlatform  =   new  NTPlatform();
            Tank nTank 
=   new  Tank70(ntPlatform);
            nTank.Move();
            nTank.Shot();
            nTank.Stop();

            
// 如果在NT平台下使用该游戏
            LinuxPlatform linuxPlatform  =   new  LinuxPlatform();
            Tank lTank 
=   new  Tank90(linuxPlatform);
            lTank.Move();
            lTank.Shot();
            lTank.Stop();

            Console.ReadLine();
        }
    }

    
public   abstract   class  Tank
    {
        
public   abstract   void  Draw();
        
public   abstract   void  Move();
        
public   abstract   void  Stop();

        
// shot方法不涉及调用系统接口
         public   abstract   void  Shot();
    }

    
public   class  Tank70 : Tank
    {
        Platform platform;

        
public  Tank70(Platform platform)
        {
            
this .platform  =  platform;
        }

        
public   override   void  Draw()
        {
            platform.Draw();
        }

        
public   override   void  Move()
        {
            platform.Move();
        }

        
public   override   void  Stop()
        {
            platform.Stop();
        }

        
public   override   void  Shot()
        {
            Console.WriteLine(
" Tank70开火! " );
        }
    }

    
public   class  Tank90 : Tank
    {
        Platform platform;

        
public  Tank90(Platform platform)
        {
            
this .platform  =  platform;
        }

        
public   override   void  Draw()
        {
            platform.Draw();
        }

        
public   override   void  Move()
        {
            platform.Move();
        }

        
public   override   void  Stop()
        {
            platform.Stop();
        }

        
public   override   void  Shot()
        {
            Console.WriteLine(
" Tank90开火! " );
        }
    }

    
#region  游戏运行平台
    
public   abstract   class  Platform
    {
        
public   abstract   void  Draw();
        
public   abstract   void  Move();        
        
public   abstract   void  Stop();
    }

    
public   class  NTPlatform : Platform
    {
        
public   override   void  Draw()
        {
            
// 调用windows接口绘制坦克外形,等等……
            Console.WriteLine( " windows平台下绘制坦克外形。 " );
        }

        
public   override   void  Move()
        {
            Console.WriteLine(
" windows平台下坦克移动。 " );
        }

        
public   override   void  Stop()
        {
            Console.WriteLine(
" windows平台下坦克停止。 " );
        }
    }

    
public   class  LinuxPlatform : Platform
    {
        
public   override   void  Draw()
        {
            
// 调用Linux接口绘制坦克外形,等等……
            Console.WriteLine( " Linux平台下绘制坦克外形。 " );
        }

        
public   override   void  Move()
        {
            Console.WriteLine(
" Linux平台下坦克移动。 " );
        }

        
public   override   void  Stop()
        {
            Console.WriteLine(
" Linux平台下坦克停止。 " );
        }
    }
    
#endregion

       这篇文章 中的毛笔+颜料的例子更形象的展现了桥接模式的用法。

转载于:https://www.cnblogs.com/binfen/archive/2009/07/19/1526628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值