柚子Nan--回归原点

Everything can be as easy as you like or as complex as you need.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

何时该实用属性Property,何时用Proected——类间继承

Posted on 2004-12-03 10:59  柚子Nan  阅读(1185)  评论(1编辑  收藏  举报
在看Observer模式的时候,参考了IView Observer模式简介

发现一个问题,如果是类的继承,就像Observer ConcreteObserver之间,父类中有个字段aSubject被设置成protected的访问级别,当然可以被子类ConcreteObserver引用到,同时这个字段也作了get/setProperty属性!那么在子类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 代码