如果有的话,用松散耦合或高耦合来改进我的代码?
Improving my code with loose coupling or high coupling if any?
我想通过创建与我的代码更低的耦合来使用 GRASP 改进我的代码。在我的例子中,我不确定我是否在做低耦合,我是否在做松耦合而不是高耦合?
我正在使用 Spring boot 制作我的项目。在我的管理控制器中,我正在处理两个 类:RestaurantcardService
和 ContentsectionService
(来自我的服务层)。这两个 类 都实现了名为 I_RestaurantcardService
和 I_ContentsectionService
的接口。
代码如下所示:
public class AdminController {
RestaurantCardService restaurantcardService;
ContentsectionService contentsectionService;
public AdminController (){
this.restaurantcardService = new RestaurantCardService ();
this.contentsectionService = new ContentsectionService ();
}
现在我的问题是:
如果我实现 RestaurantCardService
和 ContentsectionService
的接口作为属性的数据类型而不是 类 本身,耦合不会下降,因为我们可以在 RestaurantCardService
和 ContentsectionService
?
的另一种变体中实现接口
然后它看起来像这样:
这是高度耦合的代码。您有 hard-coded 您在 class itself.It 中的依赖项将使 class 难以进行单元测试。
好的方法应该是通过构造函数获取依赖项,并且每个服务都应该有接口。
例如:-
public class AdminController {
private final RestaurantCardService restaurantcardService;
private final ContentsectionService contentsectionService;
public AdminController (final RestaurantCardService rcs,final ContentsectionService css){
this.restaurantcardService = rcs;
this.contentsectionService = css;
}
AdminController ac = new AdminController (new RestaurantCardServiceImpl(),new ContentsectionServiceImpl());
so for unit testing you can pass mock services;
for intance:
AdminController ac = new AdminController (new MockRestaurantCardServiceImpl(), new MockContentsectionServiceImpl());
享受编码!
我想通过创建与我的代码更低的耦合来使用 GRASP 改进我的代码。在我的例子中,我不确定我是否在做低耦合,我是否在做松耦合而不是高耦合?
我正在使用 Spring boot 制作我的项目。在我的管理控制器中,我正在处理两个 类:RestaurantcardService
和 ContentsectionService
(来自我的服务层)。这两个 类 都实现了名为 I_RestaurantcardService
和 I_ContentsectionService
的接口。
代码如下所示:
public class AdminController {
RestaurantCardService restaurantcardService;
ContentsectionService contentsectionService;
public AdminController (){
this.restaurantcardService = new RestaurantCardService ();
this.contentsectionService = new ContentsectionService ();
}
现在我的问题是:
如果我实现 RestaurantCardService
和 ContentsectionService
的接口作为属性的数据类型而不是 类 本身,耦合不会下降,因为我们可以在 RestaurantCardService
和 ContentsectionService
?
然后它看起来像这样:
这是高度耦合的代码。您有 hard-coded 您在 class itself.It 中的依赖项将使 class 难以进行单元测试。
好的方法应该是通过构造函数获取依赖项,并且每个服务都应该有接口。
例如:-
public class AdminController {
private final RestaurantCardService restaurantcardService;
private final ContentsectionService contentsectionService;
public AdminController (final RestaurantCardService rcs,final ContentsectionService css){
this.restaurantcardService = rcs;
this.contentsectionService = css;
}
AdminController ac = new AdminController (new RestaurantCardServiceImpl(),new ContentsectionServiceImpl());
so for unit testing you can pass mock services;
for intance:
AdminController ac = new AdminController (new MockRestaurantCardServiceImpl(), new MockContentsectionServiceImpl());
享受编码!