我有一个应用GRASP控制器模式的问题,同时保持它固体,更具体地说,同时保持它与一个责任。SOLID GRASP控制器模式?
Wikipedia's控制器模式定义说:
的控制器模式与分配系统事件处理,以代表整个系统或一种使用情形,非UI类的责任。 Controller对象是负责接收或处理系统事件的非用户界面对象。
而关于SOLID的single responsibility principle:
在面向对象的编程,单一职责原则规定,每个类应该有一个责任,那责任应该完全由类封装。它的所有服务都应该与责任完全一致。
让我们来看一些示例代码。比方说,我有以下Java类:
public class foo {
public foo(){}
public int foo1(){/*Some code*/}
public String foo2(){/*Some code*/}
public String foo3(int foo31){/*Some code*/}
}
public class bar {
public bar(){}
public int bar1(){/*Some code*/}
public String bar2(){/*Some code*/}
public String bar3(int bar31){/*Some code*/}
}
什么是一个好的控制器实现,同时保持一个责任?我只是通过用例还是什么?例如:
public class bazController {
private foo fooInstance;
private bar barInstance;
public bazController(){
this.fooInstance = new foo();
this.barInstance = new bar();
}
public void fooAction1(int arg){
this.foo.foo3(arg);
}
public void barAction1(int arg){
this.bar.bar3(arg);
}
public void fooAction2(){
this.foo.foo1();
}
public void barAction2(){
this.bar.bar1();
}
}
我是否守信的责任吗?我正在做这个,或者正确地理解这个吗?事先谢谢你。
编辑:如果bazController
有这种方法会发生什么,使两个类相关?
public int bazAction(){
return this.foo.fooAction1() + this.bar.barAction1();
}
谢谢!如果两个班都相关,会发生什么?我刚刚编辑了我的帖子。为了简单起见,我也有意破坏这个原则。 –
@ user1231958 - 更新了答案。 – NaveenBhat
谢谢!事情现在更清晰了! –