`
netxdiy
  • 浏览: 679178 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

设计模式示例二 Decorator(装饰者)

 
阅读更多
示例名称:超级递送员
示例说明:定义基类(BaseDelivery)和虚方法(Deliver),定义继承自该基类的三个子类(MilkDelivery、NewspaperDelivery和CarDelivery),重写基类的虚方法(Deliver)。
示例类图:

关键部分说明

BaseDelivery
usingSystem;

namespaceDelivery
...{
publicclassBaseDelivery
...{
publicvirtualvoidDeliver()
...{
Console.WriteLine(
"我是早晨的送递员");
}

}

}
Deliver是虚方法,子类需要重写它。

MilkDelivery、NewspaperDelivery和CarDelivery
usingSystem;

namespaceDelivery
...{
publicclassMilkDelivery:BaseDelivery
...{
privateBaseDelivery_delivery;

publicMilkDelivery(BaseDeliverydelivery)
...{
_delivery
=delivery;
}


publicoverridevoidDeliver()
...{
_delivery.Deliver();
Console.WriteLine(
"我送来牛奶!");
}

}

}



usingSystem;

namespaceDelivery
...{
publicclassNewspaperDelivery:BaseDelivery
...{
privateBaseDelivery_delivery;
publicNewspaperDelivery(BaseDeliverydelivery)
...{
_delivery
=delivery;
}

publicoverridevoidDeliver()
...{
_delivery.Deliver();
Console.WriteLine(
"我送来了报纸!");
}

}

}



usingSystem;

namespaceDelivery
...{
publicclassCarDelivery:BaseDelivery
...{
privateBaseDelivery_delivery;
publicCarDelivery(BaseDeliverydelivery)
...{
_delivery
=delivery;
}

publicoverridevoidDeliver()
...{
_delivery.Deliver();
Console.WriteLine(
"我还送来了你买的小汽车,梦想成真了吧,哈哈!");
}

}

}


这三个类分别继承了BaseDelivery(is a的关系),含有一个BaseDelivery类型的私有字段和一个BaseDelivery参数的构造方法,重写父类BaseDelivery的Deliver方法。

应用
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;

namespaceDelivery
...{
classProgram
...{
staticvoidMain(string[]args)
...{
BaseDeliverybaseDelivery
=newBaseDelivery();
MilkDeliverymilkDelivery
=newMilkDelivery(baseDelivery);
NewspaperDeliverynewsDelivery
=newNewspaperDelivery(milkDelivery);
CarDeliverycarDelivery
=newCarDelivery(newsDelivery);
carDelivery.Deliver();
Console.Read();
}

}

}
任何继承了BaseDelivery的子类都可以做为其它子类的构造函数的参数传递。即可实现对该子类的装饰(Decorator)。

运行结果


现在是不是很开心!
分享到:
评论

相关推荐

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

    C#23种设计模式_示例源代码及PDF

    装饰模式:装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案, 装饰模式 提供比继承更多的灵活性。动态给一个对象增加功能,这些功能可以再动态的撤消。增加由 一些基本功能的排列组合而产生...

    C#设计模式.PDF

    二、 设计模式举例 5 三、 先有鸡还是先有蛋? 7 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 8 五、 .net本质 9 C#设计模式(2) 11 一、 "开放-封闭"原则(OCP) 12 二、 里氏代换原则(LSP) 12 C#设计模式(3) 19 ...

    DecoratorPattern:装饰者模式示例

    装饰模式装饰器设计模式的示例项目装饰器模式允许用户在不改变其结构的情况下向现有对象添加新功能。 这种类型的设计模式属于结构模式,因为这种模式充当现有类的包装器。 这种模式创建了一个装饰器类,它包装了原始...

    C#设计模式大全

    二、 设计模式举例 三、 先有鸡还是先有蛋? 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 五、 .net本质 C#设计模式(2) 一、 "开放-封闭"原则(OCP) 二、 里氏代换原则(LSP) C#设计模式(3) 三、 依赖...

    研磨设计模式(完整带书签).part2.pdf

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...

    研磨设计模式(完整带书签).part1.pdf

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...

    Head First设计模式中文版及示例源码

    第1章到第11章陆续介绍的设计模式为Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton,Command、Adapter、Facade、TemplateMethod、Iterator、Composite、State、Proxy。最后三章比较...

    设计模式:可复用面向对象软件的基础--详细书签版

    整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法可以作为后来者的榜样。如果要知道怎样恰当定义和描述设计模式,我们应该可以从他们那儿获得启发”--steve...

    ASP.NET设计模式-杨明军译(源码)

    《asp.net设计模式》涵盖了开发企业级asp.net应用程序的知名模式和最佳实践。本书用到的模式可以用于从asp.net1.0到asp.net 4.0的任何版本。不必管模式本身所用的语言,可以将模式用于任何面向对象编程语言。  ...

    设计模式C++代码示例-含VC工程

    C++设计模式代码: (VC工程) Creational Patterns Abstract Factory Creates an instance of several families of classes Builder Separates object construction from its representation Factory Method ...

    研磨设计模式-part2

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part4

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式-part3

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part3(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part2(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part4(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    研磨设计模式.part1(共4个)

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并...

    设计模式迷你手册.chm

    设计模式迷你手册.chm,大小仅 188 KB,图文并茂,介绍性强,每个设计模式附有 C++、C# 示例源码示例。 目录: 创建型 Factory Method Abstract Factory Builder Prototype Singleton 结构型 Adapter Bridge ...

    PHP设计模式之装饰者模式代码实例

    装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。 角色: Component...

Global site tag (gtag.js) - Google Analytics