什么是高级模块和低级模块。

时间:2013-05-15 06:28:56

标签: 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 ?

1 个答案:

答案 0 :(得分:11)

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

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");
    }
}