可能重复:
Java保护字段与公共getter
如果我有B类扩展A并且在A中我有一些我也在B中使用的字段,那么最好使这些字段受到保护并从B类调用它们或为这些字段编写getter方法,所以在B类中使用这个方法?(此字段在A的构造函数中设置)
我认为服务/应用程序层与Larman所说的GRASP Controller相同,它是GUI层之外的第一个对象,它委派给领域层,并且应该可从其他GUI重用。
服务(Evans)层与应用程序(Fowler)层相同,因为Fowler自己在有关“贫血域模型”的“ bliki”中这样说:http ://martinfowler.com/bliki/AnemicDomainModel.html
Quote:“应用层[服务层的名称]:定义软件应该执行的工作,并指导富有表现力的领域对象解决问题。该层负责的任务对企业来说是有意义的,或者是与之交互所必需的该层保持薄型结构,不包含业务规则或知识,而仅协调任务并将工作委托给下一层的域对象协作,它没有反映业务情况的状态,但它可以具有反映用户或程序的任务进度的状态。”
现在考虑上面的描述(另请参阅fowler的PEAA书,关于从用例中识别服务层方法),还考虑了Fowler对Service层的描述中的图片,该图说明了Service Layer是位于“用户界面”之后的第一层。此URL:http : //martinfowler.com/eaaCatalog/serviceLayer.html
现在,将上述服务/应用程序层描述与Larman关于GRASP Controller的一些话进行比较(在他最畅销的OOAD书籍“应用UML和模式”的第三版中,年龄302-306):“ ...第一个对象除了接收和协调(“控件”)系统操作的UI层之外……”“……表示在其中发生系统事件的用例场景……”“ ...通常,控制器应委派给其他对象则需要完成的工作;它协调或控制了活动。它本身并没有做很多工作。
我认为Larman的GRASP Controller层与Evans / Fowler的Application / Service层相同。别人不同意吗?然后,请解释这些概念之间的显着差异,以及一些Controller类而不是Service / Application类的示例。
我的问题之所以诞生,是因为有人说创建模型域对象是控制器的责任,而不是其他服务/应用程序层的责任。但是,能否给我一个服务层类和控制器类之间的区别的例子?