让你插上翅膀(Decorator)

原创 2003年07月14日 16:14:00

 

对你的对象进行扩展这是在平常不过的事情了.问题是,你该如何做?很多方案不是吗?例如派生子类

是的.这是个不错的方案.可是如果是在这样一种情况.我们需要在运行期间添加功能并且有客户程序

来决定合适添加何种功能.那么单纯的扩展子类对象能够办到吗?那么我们必须想办法新的办法了.是

的.你也许已经想到我要说的Decorator模式了吧.由它来帮你在想要的时候插上翅膀.

通过接口来组合是个非常好的方法.Adapter模式就是那么做的.

public interface IWing{
    public void install();
}

那么接下来.我们要插入一对真正的翅膀了"天使之翼"
public  class AngellWing : IWing{
  public void install(){
      Console.WriteLine("天使之翼");
  }
}

public  class KingWing : IWing{
  public void install(){
      Console.WriteLine("黄金之翼");
  }
}

public class Decorator : IWing{
    private IWing  Wing;//翼接口对接准备
    private string WingName;
  
    public Decorator (IWing w,string wn){
      this.Wing=w;
      this.WingName=wn;
    }
    public setWing(IWing w,string wn){
      this.Wing=w;
      this.WingName=wn;
    }

    public void install (){
     DecoratorWing();
     Wing.install();
    }
   
    private void DecoratorWing(){
      Console.WriteLine("正在插入... "+WingName+"  ...");
    }
}


//客户实际调用

class Client{
    public static int Main(string[] args){
             IWing AWing=new AngellWing();
             IWing decoator=new Decoator(AWing,"天使之翼");//装入对接对象
             decoator.install();//实际装入的是天使之翼

             //如果我们改变翼的引用那么实际装入的翼也会变换
             AWing=new KingWing();
             decoator.install();
             return;
    }
}

假设如果还有很多的翼可供选择.那么就Decoator的作用就很明显了.客户只需要调用一个

Decoator的install方法就可以了.并且装入相应的翼作为配件就可以了.如同上面还使用了

黄金之翼.好了.Decoator模式也介绍完毕

 

 

U3D模拟暗黑泰瑞尔翅膀效果

Max制作翅膀模型部分 新建一个片面,模型给一些段数,赋予一张左右二方连续贴图。 加个FFD 4*4*4,并稍微拉出一点弧度。 将头尾的Alpha值改为0,尾部第二段A...
  • vingeart
  • vingeart
  • 2016年08月15日 23:00
  • 1781

我们被叫做90后 | 致青春(催泪好文,自备纸巾)

2002年,你是小学生了,上学路上,小鸟说,早早早,你为什么背着小书包。 2004年,非典,操场上排队量体温,还没有灾难的恐惧。 2005年,你打开电视,《家有儿女》热播,"我叫夏雪我叫夏雨我叫夏...
  • u014326381
  • u014326381
  • 2015年08月22日 20:20
  • 1203

给PLSQL插上飞翔的翅膀-PLSQL优化

60-80% of database performance issues are related to poorly performing SQL,60-80%的数据库性能问题要归结于生产中糟糕的S...
  • lifetragedy
  • lifetragedy
  • 2016年03月30日 13:06
  • 6795

给移动应用开发插上翅膀--最简单的REST服务搭建

目前智能手机越来越像只是一个网络世界的接口,如果不联网,手机仿佛都没有什么作用。很多时候,我们做应用开发的,都需要依赖服务端提供的REST服务,如果没有这些来自网络的JSON数据,仿佛一个手机应用也没...
  • qq_30513483
  • qq_30513483
  • 2016年08月18日 22:24
  • 367

【JavaScript】——为静态网页插上了翅膀

越来越发现在计算机迅猛发展的今天,光靠html和xml技术只实现网页的显示和用户的浏览,已经满足不了咱们的需求,所以开发了javascript这样的脚本语言,实现动态的链接,马上成为了web网页的宠儿...
  • changyinling520
  • changyinling520
  • 2016年06月06日 18:53
  • 592

让Tomcat插上SSL的翅膀

TOMCAT提供的HTTP页面和服务,由于是基于HTTP,都是明文传输,在网络上传输的内容很容易被截获,安全性无法得到保障。让Tomcat这个小老虎插上SSL的翅膀,使汤姆猫提供的是加密的服务,个人感...
  • liufeng0209
  • liufeng0209
  • 2014年12月30日 17:29
  • 461

阿里云,帮助创业者插上梦想的翅膀

2015年下半年的时候,我和一个在制造行业工作的朋友,做了一个网站,用来帮助中小微制造企业精准匹配供应商。我负责整个系统的架构和程序开发部分。 IT系统的部分,我列了三种情况:一是自己买服务器装虚拟...
  • weixin_37529181
  • weixin_37529181
  • 2017年02月17日 18:44
  • 229

给你的Firefox4插上翅膀!

在未进行下面的设置之前,虽然火狐的速度很快,可是与在win下的IE浏览速度还有点差距。其实,差距不在火狐本身! 有的同学把IPv6的协议禁用,还有的对firefox进行配置,实际使用效果都不好。...
  • atheism_zzz
  • atheism_zzz
  • 2011年03月23日 23:33
  • 243

【android】ORMLite框架 的使用方法---给你的数据库操作插上翅膀

一:首先下载 ORMLite Jar 包先去 ORMLite官网下载jar包 写博客时,目前最新的,对于Android为:ormlite-android-5.0.jar 和 ormlite-core-...
  • da_caoyuan
  • da_caoyuan
  • 2017年03月08日 18:27
  • 1585

哈罗单车异军突起遭马化腾吐槽真相,智能出行跨界布局给想象力插上翅膀

在冬季凛冽的寒风中,共享单车似乎没有夏季那么广受欢迎。与之相符的是,共享单车的资本市场,同样寒风凛冽。小蓝单车倒闭、酷骑单车也杳无音信。 神仙打架,凡人遭殃。共享单车两大巨头厮杀之余,杀出一个程...
  • tuotiansudai
  • tuotiansudai
  • 2017年12月07日 16:48
  • 50
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让你插上翅膀(Decorator)
举报原因:
原因补充:

(最多只允许输入30个字)