class animal
{
public animal(){};
private string name;
public animal ( string name)
{
this.name=name;
}
public virtual void show()
{
console.writeln("我叫:{0}",name);
}
}
class people:animal
{
protected animal an;
punlic void decorate(animal an )
{
this.an=an;
}
public override void show()
{
.........
}
}
我不太明白
protected animal an;
punlic void decorate(animal an )
{
this.an=an;
}
写这段代码有什么作用
初始化对象
嗯,,,protected animal an;这句是初始化,,但是
punlic void decorate(animal an )
{
this.an=an;
}
这段有什么作用,然后别的子类调用这个方法
构造函数和继承没什么鸟关系
额,我问的是,在子类继承父类时,子类中为什么要声明父类
protected animal an;
punlic void decorate(animal an )
{
this.an=an;
}
这段代码有什么作用
@西码: ...不好意思没看清楚.
子类中有父类对象实在是太正常了.至于作用你得问写代码的人
楼上正解,初始化an
这是装饰者模式代码,去找资料吧
嗯嗯。。。我就是再看装饰者模式的时候,看到这个部分有点小疑惑
@西码:
https://git.oschina.net/lishilei0523/GofWithEntityFramework
这里有一些我写的设计模式的例子
@黄昏MMM:
可以就这段代码作用解释下,就是这个部分有点疑惑
protected animal an;
punlic void decorate(animal an )
{
this.an=an;
}
@西码: this是主体,an是装饰对象,
可以理解为this是咖啡,an是糖,
decorate方法代表着为咖啡装饰糖
@西码: 先把理论搞清楚再看代码
装饰者模式的用途是对原方法/接口进行“装饰”,比如下面这个oracleConnection的CreateCommand方法不满足需求了,为了给cmd.BindByName = true;引入了装饰者模式,说白了有点“拦截”的意思,你可以体会下 https://github.com/shuxinqin/Chloe/blob/master/src/DotNet/ChloeDemo/OracleConnectionFactory.cs#L75