发现一个问题,如果是类的继承,就像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 代码
                    
                
                
            
        
浙公网安备 33010602011771号