博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决多集成,多子类,扩展等 ---装饰模式
阅读量:5226 次
发布时间:2019-06-14

本文共 2015 字,大约阅读时间需要 6 分钟。

public abstract class Tank    {        public abstract void Shot();        public abstract void Run();    }

解决主题类再多种方向上的扩展功能

 

public abstract class Decorator:Tank    {        private Tank tank;        public Decorator(Tank tank)        {            this.tank = tank;        }        public override void Shot()        {            Console.WriteLine( "Tank.Shot" );            tank.Shot();        }        public override void Run()        {            Console.WriteLine( "Tank.Run" );            tank.Run();        }    }
public class DecoratorA:Decorator    {        public DecoratorA( Tank tank )            : base( tank )        {        }        public override void Shot()        {            //Do some extension 红外线            Console.WriteLine( "DecoratorA.Shot" );            base.Shot();        }        public override void Run()        {            //Do Some extension            Console.WriteLine( "DecoratorA.Run" );            base.Run();        }    }    public class DecoratorB : Decorator    {        public DecoratorB( Tank tank )            : base( tank )        {        }        public override void Shot()        {            //Do some extension 夜视功能            Console.WriteLine( "DecoratorB.Shot" );            base.Shot();        }        public override void Run()        {            //Do Some extension 夜视功能            Console.WriteLine( "DecoratorB.Run" );            base.Run();        }    }

他并不是is a关系,只是把当成接口,主题是has a关系

看调用

class Program    {        static void Main( string[] args )        {            Tank tank = new T50();            DecoratorA da = new DecoratorA( tank );            DecoratorB db = new DecoratorB( da );            db.Shot();        }    }
public class T50:Tank    {        public override void Shot()        {            Console.WriteLine( "T50.Shot" );        }        public override void Run()        {            Console.WriteLine( "T50.Run" );        }    }

在.net里面的装饰功能

 

 

架构设计模式。拜读下有空

转载于:https://www.cnblogs.com/wangchuang/archive/2013/04/02/2996485.html

你可能感兴趣的文章
[android] AndroidManifest.xml - 【 manifest -> 其他次要配置】
查看>>
[HNOI2003]激光炸弹
查看>>
[USACO16FEB]围栏Fenced In Platinum
查看>>
适配器模式—STL中的适配器模式分析
查看>>
ECSHOP - 二次开发指南---购物车篇
查看>>
关于CSS3的小知识点之2D变换
查看>>
visio2013/2016软件及激活码总汇
查看>>
函数的递归
查看>>
CRC16校验原理总结 (转)
查看>>
ionic2——第一个app
查看>>
Linq 连接运算符:Concat,Union
查看>>
关于CES组件系统
查看>>
有关软件工程与计算机科学的区别
查看>>
struts入门
查看>>
Android基础(五) Service全解析----看不见的Activity
查看>>
以Settings.APPLICATION_DEVELOPMENT_SETTINGS打开开发人员面板出错总结
查看>>
前端CSS
查看>>
java中如何将字符串数组转换成字符串(转)
查看>>
出售wordpress 博客群发插件一份 100元不还价
查看>>
01背包 模板2
查看>>