我想通过创建与我的代码更低的耦合来使用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
中的哪个?
然后看起来像这样:
答案 0 :(得分:0)
这是高度耦合的代码。您已经在类本身中对依赖项进行了硬编码,这将使类难以进行单元测试。
好的方法应该是通过构造函数获取依赖项,并且应该为每个服务都有接口。
例如:-
@Async("threadFooExecutor")
@Scheduled(fixedRate = 3000, initialDelay = 5000)
public void print() {
System.out.println(Thread.currentThread().getName() + " " + 1);
System.out.println(Thread.currentThread().getName() + " " + 2);
System.out.println(Thread.currentThread().getName() + " " + 3);
System.out.println(Thread.currentThread().getName() + " " + 4);
}
@Async("threadBarExecutor")
@Scheduled(fixedRate = 3000, initialDelay = 5000)
public void print2() {
System.out.println(Thread.currentThread().getName() + " " + 1);
System.out.println(Thread.currentThread().getName() + " " + 2);
System.out.println(Thread.currentThread().getName() + " " + 3);
System.out.println(Thread.currentThread().getName() + " " + 4);
}
享受编码!