设计布局/模式

use*_*816 0 c# wpf design-patterns

我仍然是C#的新手,我正在尝试决定构建新程序的最佳方法.这是我想做的事情,我想反馈我的想法.

  • 表达层
  • 业务层(单独的类库)
  • 数据层(单独的类库)
  • 模型层(单独的类库)

我正在努力的是,如果可以让数据层和业务层中的类继承自我在模型层中定义的类型.通过这种方式,我可以根据需要使用我认为合适的任何新属性扩展我的业务层中的类型.我可能不会在Business Layer类中使用Model类型的每个属性,但这真的很重要吗?如果这还不够清楚,我可以试着拼凑一个例子.

Ada*_*son 5

通常的做法是使用封装而不是继承来进行层转换.考虑以下两种范式(如果我理解正确的话)

Model/Data Layer:
    Customer
    Order

Business Layer:
    MyCustomer : Customer
    MyOrder : Order
Run Code Online (Sandbox Code Playgroud)

Model/Data Layer:
    Customer
    Order

Business Layer:
    MyCustomer (encapsulates Data.Customer)
    MyOrder (encapsulates Data.Order)
Run Code Online (Sandbox Code Playgroud)

进入第一个(继承)路线时有两个主要问题:

  1. 修改基础(数据/模型)类时,您将被迫更改业务类.
  2. 获取对象关系很困难,通常需要非多态方法.IE,如果模型或数据层Order在一个Customer对象上公开了一个s 的集合,那么让你的MyCustomer类暴露一个MyOrder对象集合是很困难和"愚蠢的" .

利用封装处理这两个问题,绝对是我推荐的路线.

从你的名字来看,我假设你正在寻找一个WPF应用程序.如果是这种情况,请查看Model-View-ViewModel(MVVM)设计模式.