使用松耦合或高耦合(如果有)来改进我的代码吗?

时间:2019-06-20 13:37:05

标签: java loose-coupling coupling grasp

我想通过创建与我的代码更低的耦合来使用GRASP改进我的代码。在我的示例中,我不确定是否要进行较低的耦合,是否要进行松耦合而不是高耦合?

我正在使用Spring Boot进行项目。在我的管理员控制器中,我正在处理两个类:RestaurantcardServiceContentsectionService(来自我的服务层)。这两个类都实现了名为I_RestaurantcardServiceI_ContentsectionService的接口。

代码如下:

public class AdminController {
RestaurantCardService restaurantcardService;
ContentsectionService contentsectionService;
public AdminController (){
    this.restaurantcardService       = new RestaurantCardService ();
    this.contentsectionService       = new ContentsectionService ();
}

现在我的问题是:

如果我将RestaurantCardServiceContentsectionService的接口实现为属性的数据类型而不是类本身,则耦合不会降低,因为我们可以在另一种形式中实现接口RestaurantCardServiceContentsectionService中的哪个?

然后看起来像这样:

1 个答案:

答案 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);
    }

享受编码!