C#类的装饰模式

慢慢有点感觉了。

在继承类里初始化一个父类,也就是基本数据类型的延伸吧。

那进一步想,在多线程环境下,信号同步和锁,共享内存的实现不是又增加了现实难度?

 1 /*
 2  * Created by SharpDevelop.
 3  * User: home
 4  * Date: 2013/4/21
 5  * Time: 9:33
 6  *
 7  * To change this template use Tools | Options | Coding | Edit Standard Headers.
 8  */
 9 using System;
10
11 namespace Decorator
12 {
13     class Program
14     {
15         public static void Main(string[] args)
16         {
17             Person xc = new Person("小菜");
18
19             Console.WriteLine("\n 第一种装扮: ");
20
21             BigTrouser kk = new BigTrouser();
22             Tshirts dtx = new Tshirts();
23
24             kk.Decorate(xc);
25             dtx.Decorate(kk);
26             dtx.Show();
27
28             Console.Write("Press any key to continue . . . ");
29             Console.ReadKey(true);
30         }
31     }
32     class Person
33     {
34         public Person()
35         { }
36         private string name;
37         public Person(string name)
38         {
39             this.name = name;
40         }
41         public virtual void Show()
42         {
43             Console.WriteLine("装扮的 {0}", name);
44         }
45     }
46     class Finery : Person
47     {
48         protected Person component;
49
50         public void Decorate(Person component)
51         {
52             this.component = component;
53         }
54
55         public override void Show()
56         {
57             if (component != null)
58             {
59                 component.Show();
60             }
61         }
62     }
63
64     class Tshirts : Finery
65     {
66         public override void Show()
67         {
68             Console.WriteLine("大T恤");
69             base.Show();
70         }
71     }
72
73     class BigTrouser : Finery
74     {
75         public override void Show()
76         {
77             Console.WriteLine("大垮裤");
78             base.Show();
79         }
80     }
81 }

时间: 2024-11-01 21:19:28

C#类的装饰模式的相关文章

设计模式(3)-装扮你的类(装饰模式)

首先看看书上的例子吧!人穿衣服的例子! 类图就不画了,就是简单的类结构. 代码如下: #include <iostream> using namespace std; class person{ private: string name; public: person(string name){ this->name = name; } void wearTShirts(){ cout<<"大T恤"<<endl; } void wearBigT

java设计模式之装饰模式详细介绍_java

1.    装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 2.    装饰模式以对客户端透明的方式动态的给一个对象附加上更多的责任.换言之客户端并不会觉的对象在装饰前和装饰后有什么区别. 3.    装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展. 4.    装饰模式与类继承的区别: 1)    装饰模式是一种动态行为,对已经存在类进行随意组合,而类的继承是一种静态的行为,一个类定义成

C#设计模式之装饰设计模式(Decorator)

一.装饰(Decorator)模式 装饰(Decorator)模式又名包装(Wrapper)模式[GOF95].装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 引言 孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领.他变成鱼儿时,就可以到水里游泳:他变成雀儿时,就可以在天上飞行.而不管悟空怎么变化,在二郎神眼里,他永远是那只猢狲. 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任.换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同.装饰模式可以在

我对什么是真正的对象,以及软件中的对象在分析阶段、设计阶段、实现阶段的一些看法

最近对OO的理解又有了一些新的认识,拿出来和大家分享一下.为了能让大家简单直观清晰的知道我想表达的主要意思,我不说废话了.直接提出问题,然后回答. 什么是真正的对象? 什么是面向对象分析阶段时的对象?  什么是面向对象设计阶段时的对象? 什么是面向对象实现阶段时的对象? 真正的对象 我所理解的真正的对象就是现实生活中客观存在或不存在的真正的对象.这个对象有一个明显的特征就是它具有非常多的状态特征和行为特征.比如一个人是一个对象,他在一生中会经历无数个交互场景,在这个过程中,每个人的行为特征会不断

每天一个设计模式之装饰者模式

为什么会有装饰者模式 假如有一个这样的场景,我们需要为某些对象(A)动态的添加一些功能(method),那我们会怎么做?很直观的我们会想到继承,写一个类(B)继承于这个对象所属的类(A),然后重写他的方法.这似乎解决了问题,但是如果有一天,对象A多了一个功能或对原有的功能进行了修改,这个时候你会发现类B或多或少也要做出一些改变.这开始变得有些不方便,逐渐的人们发现继承这样的紧密耦合的方式在代码复用方面并不理想.那么如何才能更好的复用代码使得对象的功能能够不断增加完善呢?接口是不错的选择,只要接口

设计模式之禅之设计模式-装饰者模式

一:装饰模式的定义        --->动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活.        --->如果大家还记得代理模式,那么很容易看懂这个类图,装饰类的作用也就是一个特殊的代理类.        --->在装饰模式中,必然有一个最基本.最核心.最原始的接口或抽象类充当Component抽象构件 二:装饰模式的角色        ● Component抽象构件                Component是一个接口或者是抽象类,就是定

装饰模式

[装饰模式]:   动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活.   Component是定义一个对象接口,可以给这些对象动态的添加职责. ConcreteComponent是定义一个具体的对象,也可以给这个对象添加一些职责. Decorator装饰抽象类,继承了Component类,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator类的存在的.至于ConcreteDecorator 就是具体的装饰对象,起到给C

.NET设计模式研究之装饰模式

设计 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀.如何使"对象功能的扩展"能够根据需要来动态地实现?同时避免"扩展功能的增多"带来的子类膨胀问题?从而使得任何"功能扩展变化"所导致的影响将为最低?这就是本文要讲的Decorator模式. 意图 动态地给一个对象添加一些额外的职责.就

PHP设计模式之装饰模式

下面是一个简单类,帮助了解装饰模式,希望能对大家有帮助,有些地方改成中文,便于了解. 我要到饭馆吃饭,程序的结果是打印对我吃的东西的描述和计算价钱. 这样一层一层的包下来, 像是大口袋套小口袋,就是所谓的装饰模式. //基类 class 食物{ var $des='食物'; var $cost; function getdes(){ return $this->des; } function getcost(){ return $this->cost; } } //被装饰者类 class 米饭