Design Pattern 13-Decorator

原创 2004年09月29日 14:28:00

/*
 * 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.

为什么使用Decorator?
我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,
使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的.

 */
using System;
using System.Collections ;

namespace Pattern
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 
 public interface Work
 {
  void insert();

 }
 public class SquarePeg : Work
 {
  public void insert()
  {
      System.Console .WriteLine ("方形桩插入");
  }
 }

 

 public class Decorator : Work
 {

  private Work work;
  //额外增加的功能被打包在这个List中
  private ArrayList others = new ArrayList();

  //在构造器中使用组合new方式,引入Work对象;
  public Decorator(Work work)
  {
    this.work=work;
  
    others.Add ("挖坑");

    others.Add ("钉木板");
  }

  public void insert()
  {

    newMethod();
  }

  
  //在新方法中,我们在insert之前增加其他方法,这里次序先后是用户灵活指定的   
  public void newMethod()
  {
    otherMethod();
    work.insert();

  }


  public void otherMethod()
  {
    IEnumerator listIterator = others.GetEnumerator();
    while (listIterator.MoveNext ())
    {
      System.Console .WriteLine(((String)(listIterator.Current )) + " 正在进行");
    }

  }


 }

 

}
//装饰模式
   
//   Work squarePeg = new SquarePeg();
//   Work decorator = new Decorator(squarePeg);
//   decorator.insert();

Design Pattern----Behavioral Patterns

Behavioral Patterns可以分为两类设计模式:Behavioral Class Patterns(行为类模式)和Behavioral Object Patterns(行为对象模式)。 B...
  • ccsu_001
  • ccsu_001
  • 2014年09月10日 16:55
  • 1865

Proxy Design Pattern 代理设计模式

代理设计模式,这个模式很多用于服务器客户端之类的,上网也经常使用代理之类的,想起来感觉是很复杂的,不过这个设置模式本身是很简单的。 就是一个类调用另外一个类的函数,客户调用的是一个类,而实际的工作是由...
  • kenden23
  • kenden23
  • 2014年07月13日 09:22
  • 1133

C++版的Head First Design Pattern

       前 些天从sourceforge上down下一个C++版的Head First Design Pattern,一直都没有仔细看过,也不知道HeadFirstDesignPattern是一...
  • iinel
  • iinel
  • 2007年11月16日 10:13
  • 1578

设计模式之---单例模式(Singleton Design Pattern)

场景 对象只要利用自己的属性完成了自己的任务.那该对象就是承担了责任。 除了维持了自身的一致性,该对象无需承担其他任何责任。 如果该对象还承担着其他责任,而其他对象又依赖于该特定对象所承担的贵任...
  • u010878994
  • u010878994
  • 2016年04月26日 01:19
  • 583

几本Design Pattern的书

大话设计模式设计模式--基于C#的工程化实现及扩展(china-pub 首发) First head Design Pattern设计模式之禅...
  • tuwen
  • tuwen
  • 2011年03月06日 11:51
  • 976

Design Pattern: Proxy 模式

学习是分享和合作式的! 转载请注明出处:http://blog.csdn.net/wdzxl198/article/details/10472999; 文章摘自: http://www.ri...
  • wdzxl198
  • wdzxl198
  • 2013年08月28日 21:00
  • 848

Design Pattern Explained 读书笔记五——Strategy

What?Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy l...
  • lemon89
  • lemon89
  • 2015年07月31日 01:02
  • 814

Head First Design Pattern - 学习笔记

1. 设计模式的本质,就是针对具体问题,以某种方式将变化的部分抽取并封装起来,使其独立于其他不变的部分,不对其造成影响。 2. 设计原则一:封装变化。找出应用中可能需要变化之处,把它们独立出来,不要...
  • u010665051
  • u010665051
  • 2015年06月27日 09:53
  • 520

设计模式 - 迭代器模式(iterator pattern) 详解

迭代器模式(iterator pattern) 详解本文地址: http://blog.csdn.net/caroline_wendy迭代器模式(iterator pattern) : 提供一种方法顺...
  • u012515223
  • u012515223
  • 2014年06月27日 14:03
  • 1910

java设计模式大全 Design pattern samples in Java(最经典最全的资料)

Design pattern samples in Java.Build status:IntroductionDesign patterns are formalized best practice...
  • changemyself
  • changemyself
  • 2015年06月19日 13:10
  • 10335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Design Pattern 13-Decorator
举报原因:
原因补充:

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