问:由于Model层负责检索和显示数据,因此,对于此类的每个对象,如果我们使用一个接收JSONObject作为参数并填充该对象的类构造函数,而不是在Activity类上的方法?
这就是“模型,视图,控制器”之类的抽象在我的大脑中真正融化的地方。
一方面,活动处理视图,但实际上它是一个控制器。并预测在一个真正的型号,所以将它最好,如果它做了一个示范的工作,只是坚持表示数据结构,没有操纵本身,对不对?
再说一次,如果您要准确地对Forecast.io api调用中的数据进行建模,就像我们在这种情况下所做的那样,您会认为,是的,实际上,它应该接受自身的json表示并知道如何相应地建立自己。
实际上,这意味着您的控制器不再需要关心自己的预测模型API。它只是调用天气api,将数据传递到可以使用的模型,并依靠其中的某些行为,并且为减少破损提供了更好的条件。
另外,我想这意味着将来可以增强Forecast模型,以接受具有新构造函数或源参数的其他Forecast json / xml对象,并且仍能按照我们在Stormy活动本身中的预期方式进行操作。
我肯定喜欢MainActivity代码的想法,其中包括如下一行:
mForecast = 新的 预测(jsonData );
或者...
mForecast = new Forecast (jsonData , “ bobsWeatherShack” );
答:构造函数和方法之间的重要区别在于,构造函数创建和初始化尚不存在的对象,而方法则对已经存在的对象执行操作。
构造函数不能直接调用。当new关键字创建对象时,将隐式调用它们。可以直接在已经用new创建的对象上调用方法。
构造函数和方法的定义在代码中看起来相似。它们可以采用参数,可以具有修饰符(例如public),并且在括号中具有方法主体。
构造函数的名称必须与类名称相同。他们无法返回任何内容,甚至不能返回任何值(对象本身是隐式返回)。
尽管可能是无效的,但必须声明方法以返回某些内容。
给定所有这些条件,方法在此上下文中更加灵活,具有描述性并且可重用。使用方法而不是构造函数在将来提供了更大的扩展潜力。