界面:
public interface ISubject
{
void registerObserver(IObserver o);
void removeObserver(IObserver o);
void noifyObservers();
}
和
public interface IObserver
{
void update(float temp, float humidity, float pressure);
}
这是课程
public class CurrentConditionsDisplay : IObserver
public float temperature;
public float humidity;
public ISubject weatherData;
public CurrentConditionsDisplay(ISubject weatherData)
{
this.weatherData = weatherData;
weatherData.registerObserver(this);
}
}
registerObserver函数的参数是IObserver,但在构造函数中使用:
weatherData.registerObserver(this);
“this”关键字是什么意思?我知道“this”关键字是指该类的当前实例,但在这种情况下,“this”关键字是什么意思?
答案 0 :(得分:1)
类CurrentConditionsDisplay实现了IObserver,它将this关键字在其自己的构造函数中传递给weatherData.registerObserver,后者依赖于实现IObserver的对象实例。
它也可以是依赖的模式,将此对象注入到weatherData对象中,该对象在创建时等待IObserver的实例。
答案 1 :(得分:0)
也作为答案发布:
CurrentConditionsDisplay
由其构造函数实例化,该构造函数也将自身传递给weatherData.registerObserver
方法。您可以在方法中传递CurrentConditionsDisplay
,因为它实现了IObserver
接口。