要求未实现的接口作为业务层的参数?

时间:2013-04-09 17:52:54

标签: asp.net-mvc architecture interface refactoring viewmodel

要求消费者实施接口只是为了传递参数,这是不是很糟糕?


为了帮助可视化,我的具体情况是ASP.NET C#MVC网站,其中包含以下程序集内容:

MyWebAssembly.Web
    Controllers
MyWebAssembly.Models
    PurchaseViewModel : IBillingAddress
        SubscribeViewModel : PurchaseViewModel
        AddCreditsViewModel : PurchaseViewModel
MyWebAssembly.BLL
    IBillingAddress
    BeginPurchase(IBillingAddress, etc.)
MyWebAssembly.Data
    Models

我有大约100个与我的业务逻辑紧密结合的ViewModel。我已经将它们提取到接口(如上所示),以避免为自动化添加另一层相同的模型,现在我终于将我的业务层与网站分离了。

我认为这是这个过程中的第一步。这让我可以将业务逻辑移出程序集,但我觉得很脏,就像我所做的一样是随机代码。并非所有的ViewModel都是这种耦合,但IBillingAddress只是其中一个例子。

您是否认为要求消费者实现接口只是为了传递参数是不好的形式?我觉得我回到Win32 API时就这样做了。我应该只将10个标准类型参数传递给我的业务方法吗?我正在俯瞰我的建筑有一些明显的支点吗?


编辑:

我还在考虑这个问题。也许这个例子让我感到困惑的原因之一是因为BillingAddress看起来像是一个相对固定的依赖接口。将它暴露并构建到ViewModel中更有意义。我想如果它是一个潜在的移动目标(例如ICustomer),映射的交互将更有意义。你的建议仍然需要。

0 个答案:

没有答案