当前位置: 首页 > news >正文

桥模式

经典的就是坦克例子

比如定义一个坦克,有各种型号,T50.T69,T99等,电脑上游戏的坦克有一种,手机上坦克有一种

经典代码,我直接贴代码

 public abstract class Tank
    {
        protected TankPlatformImplementation tankImpl;

        public Tank(TankPlatformImplementation tankImpl)
        {
            this.tankImpl = tankImpl;
        }

        public abstract void Shot();
        public abstract void Run();
        public abstract void Stop();
    }
 public abstract class TankPlatformImplementation
    {
        public abstract void MoveTankTo();
        public abstract void DrawTank();
        public abstract void DoShot();
        public abstract void Stop();
    }
 public class T50:Tank
    {
        public T50( TankPlatformImplementation tankImpl )
            : base( tankImpl )
        {
        }

        public override void Shot()
        {
            tankImpl.DoShot();
        }

        public override void Run()
        {
            tankImpl.MoveTankTo();
        }

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

    public class T75 : Tank
    {
        public T75( TankPlatformImplementation tankImpl )
            : base( tankImpl )
        {
        }

        public override void Shot()
        {
            tankImpl.DoShot();
        }

        public override void Run()
        {
            tankImpl.MoveTankTo();
        }

        public override void Stop()
        {
            tankImpl.Stop();
        }
    }
public class PCTankImplementation:TankPlatformImplementation
    {
        public override void MoveTankTo()
        {
        }

        public override void DrawTank()
        {
        }

        public override void DoShot()
        {
        }

        public override void Stop()
        {
        }
    }

    public class MobileankImplementation : TankPlatformImplementation
    {
        public override void MoveTankTo()
        {
        }

        public override void DrawTank()
        {
        }

        public override void DoShot()
        {
        }

        public override void Stop()
        {
        }
    }

调用

class Program
    {
        static void Main( string[] args )
        {
            TankPlatformImplementation tankImpl = new PCTankImplementation();

            Tank tank = new T50( tankImpl );
        }
    }

这样子达到松耦合,客户端可以实现灵活多变,也拒绝了繁琐急剧膨胀的类型继承,达到结构明晰

转载于:https://www.cnblogs.com/wangchuang/archive/2013/04/01/2994392.html

相关文章:

  • k8s高可用
  • kafka笔记博客
  • 开发工具之AltiumDesigner
  • 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?...
  • go guid 和uuid生成
  • 使用策略模式减少if else
  • numpy中的max()函数
  • [NOI2005]聪聪与可可(期望)
  • span底部显示border一半
  • Django之ORM多表操作
  • Dilated/Atrous conv 空洞卷积/多孔卷积
  • PHP 用户登录与退出
  • Java之线程池深度剖析
  • POCO浅探
  • Dataset+TableAdapter _.net最终数据访问类出现? 我的心血显然被藐视了
  • [Vue CLI 3] 配置解析之 css.extract
  • android图片蒙层
  • JavaScript HTML DOM
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • LeetCode18.四数之和 JavaScript
  • ReactNativeweexDeviceOne对比
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • vue-router的history模式发布配置
  • 阿里研究院入选中国企业智库系统影响力榜
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 正则表达式-基础知识Review
  • 昨天1024程序员节,我故意写了个死循环~
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​虚拟化系列介绍(十)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (WSI分类)WSI分类文献小综述 2024
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (六)c52学习之旅-独立按键
  • (十六)串口UART
  • (算法)前K大的和
  • (轉)JSON.stringify 语法实例讲解
  • .Net 4.0并行库实用性演练
  • .net core 6 集成 elasticsearch 并 使用分词器
  • // an array of int
  • @RequestBody与@ModelAttribute
  • [1] 平面(Plane)图形的生成算法
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AX]AX2012 SSRS报表Drill through action
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [CTO札记]如何测试用户接受度?
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [exgcd] Jzoj P1158 荒岛野人
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IE编程] IE中对网页进行截图的编程接口
  • [java进阶]——方法引用改写Lambda表达式