我正在尝试构建一个新的应用程序并遇到麻烦以使其干净。
这个想法是这样做的:
- XAML页面
- 背后的代码
- 我们称之为PageViewModel(表示页面模型的对象)
- 与website1相同
WebSiteX(表示层)
- 与网站1相同
商业项目
- 服务(将通过页面后面的代码调用,将DAL对象转换为可由网站读取的ViewModel)
- ViewModel(表示真实对象可以在多个页面/网站中使用)
DAL项目
- 经理(按服务调用,返回DAL对象)
- DAL(访问数据库或其他来源)
我的ViewModel存储在一个单独的项目中,如果需要可以在各种网站中使用。
我感到很尴尬的事实是,演示规则(这应该是一个数字或这是必需的)将存储到业务层(ViewModels内的属性)。两个网站也可能使用相同的对象但具有不同的演示规则(在一种情况下不需要在另一种情况下)。
我看到的唯一另一种方法是将Services和ViewModels放在每个网站中,但如果他们使用类似的对象,代码将被复制。
你会怎么做?感谢阅读。
答案 0 :(得分:0)
我认为演示规则可以在PageViewModel中,或者您可以在从PageViewModel转换为BusinessObjects时使用验证规则(您将它们称为View Models)。
此外,您已经提到的内容也可以使用
我看到的唯一另一种方法是将服务和ViewModel放在每个网站中,但如果他们使用类似的对象,代码将被复制。
我会保留重复的ViewModels而不是服务。是的,代码是重复的,但是这给了我自由,并且尽管具有相同的基础商业模式,但是有目的地使单独的网站单独维护。
答案 1 :(得分:0)
我认为这可能是一个很好的继承实例。创建PageVM类的基本实例,并覆盖不同站点中的行为。
尝试将“必需”之类的内容分成可以覆盖的单独方法,可能在基本实例中将其声明为抽象,以便强制您在实现版本中定义该逻辑。
棘手的部分将是构建PageVM对象,为此你可能想要调查Factory或Builder模式,让你的UI项目创建自定义的PageVM对象。