oop - 什么是高级模块和低级模块。?

标签 oop language-agnostic dependencies

我知道这是以下链接的完全相同的副本。

What are "High-level modules" and "low-level modules" (in the context of Dependency inversion principle)?

但是读完之后我不明白它到底是什么。

High level modules are abstract classes and Interfaces ?

最佳答案

高级模块是将由表示层直接使用的接口(interface)/抽象。另一方面,低层是一堆小模块(子系统)帮助高层完成他们的工作。下面的示例是高级模块。我已经排除了较短样本的依赖构造函数注入(inject)。

public class OrderService : IOrderService
{
    public void InsertOrder(Order ord)
    {
        if(orderValidator.IsValidOrder(ord)
        {
            orderRepository.InsertNew(ord);
            userNotification.Notify(ord);
        }
    }
}

以及低级模块之一( OrderValidator ):

public class OrderValidator : IOrderValidator
{
    public bool IsValidOrder(Order ord)
    {
        if(ord == null) 
            throw new NullArgumentException("Order is null");
        else if(string.IsNullOrEmpty(ord.CustomerId)) 
            throw new InvalidArgumentException("Customer is not set");
        else if(ord.Details == null || !ord.Details.Any())
            throw new InvalidArgumentException("Order detail is empty");
    }
}

关于oop - 什么是高级模块和低级模块。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558256/

相关文章:

language-agnostic - "program to an interface"是什么意思?

java - 记录器究竟如何是单例以及如何创建不同的日志文件?实现了我自己的记录器以供理解

language-agnostic - 为什么使用前导零来表示八进制数?

algorithm - 生成所有组合时的复杂性

java - 如何用库依赖链来分发Java应用程序?

c# - 什么术语用于描述两个类何时相互依赖?

javascript - 将 OOP 类转换为 FP 函数的最佳方法是什么?

python - 从 YAML 文件中以 OOP 方式加载嵌套对象的最佳实践

language-agnostic - 我应该如何命名执行此操作的方法...?

maven - 如果它们来 self parent 的其他子模块,我应该依赖 Maven 中的传递依赖吗?