何时该实用属性Property,何时用Proected——类间继承
2004-12-03 10:59
417 查看
在看Observer模式的时候,参考了IView 的 Observer模式简介 。
发现一个问题,如果是类的继承,就像Observer 和ConcreteObserver之间,父类中有个字段aSubject被设置成protected的访问级别,当然可以被子类ConcreteObserver引用到,同时这个字段也作了get/set的Property属性!那么在子类ConcreteObserver中的函数用哪个?
public override void Update()
{
// 第一种 用Property :this.ObservedSubject
System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,
strObserverName,this.ObservedSubject.ImportantSubjectData);
// 第二种 用Protected : aSubject
System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,
strObserverName,aSubject.ImportantSubjectData);
}
其实两个都可以,因为Property也可以被子类访问,一般来说不应该有两个出口给子类的,
想讨论一下,Property在什么情况下被使用。
很显然protected 的初衷就是为了继承用的,我认为此处使用Protected !
完整地代码参见 Observer 代码
发现一个问题,如果是类的继承,就像Observer 和ConcreteObserver之间,父类中有个字段aSubject被设置成protected的访问级别,当然可以被子类ConcreteObserver引用到,同时这个字段也作了get/set的Property属性!那么在子类ConcreteObserver中的函数用哪个?
public override void Update()
{
// 第一种 用Property :this.ObservedSubject
System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,
strObserverName,this.ObservedSubject.ImportantSubjectData);
// 第二种 用Protected : aSubject
System.Console.WriteLine("In Observer {0} : DataFrom subject {1}" ,
strObserverName,aSubject.ImportantSubjectData);
}
其实两个都可以,因为Property也可以被子类访问,一般来说不应该有两个出口给子类的,
想讨论一下,Property在什么情况下被使用。
很显然protected 的初衷就是为了继承用的,我认为此处使用Protected !
完整地代码参见 Observer 代码
相关文章推荐
- 如何实现无刷新的DropdownList联动效果 (转贴)
- 同时使用apache和IIS的一个解决方案[转载]
- Eclipse+Tomcat+Lomboz的配置总结
- j2ee程序员应该掌握的linux知识
- 配置redhat as 3 update3 进入图形界面问题
- 探索Linux内核飞行十二年
- red hat linux AS3 下安装Mysql,apache,php
- Intel平台下Linux中 ELF文件动态链接的加载、解析及实例分析(一): 加载
- 分布式应用架构中的数据传输对象(DTO)
- 爱琴海的珍珠 (Penelope)
- JavaWebStudio开发文档网站及开发论坛
- linux目录解释
- 在RHEL2.0 上部署Websphere5.0 集群环境
- Solaris 10 的困惑与喜悦
- [导入]Linux内核飞行十二年[转贴]
- [转载]大学生创业:一个硬件网站站长自述创业经历
- 网站站内搜索的重要性
- [转载]PHP网站漏洞的相关总结
- Top 10 Reasons for Developers to Create Smart Clients
- 【Photoshop 小技巧集锦八十条】