AOP(面向切面编程) (比如MVC的过滤器Filter,它里面的异常捕捉可以通过FilterAttribute,IExceptionFilter 日志记录,权限验证,异常拦截等。
将通用功能从业务逻辑中抽离出来,可以省略大量重复代码,有利于代码的操作和维护。)
DDD (领域驱动设计 防窜货3.2的仓储模型也是这个)
(1)仓储接口层和实现层分离,使得领域模型更加纯净,领域模型只关注仓储的接口,而不用关注数据存储的具体细节,使得领域模型将更多的精力放在领域业务上面。
(2)应用层只需要引用领域层,只需要调用领域层里面的仓储接口就能得到想要的数据,而不用添加仓储具体实现的引用,这也正好符合项目解耦的设计。
(3)更换ORM方便。项目现在用的是EF,若日后需要更换成NH,只需要再实现一套仓储和上下文即可。如果要更好的使用DDD的设计,EF现在的Code First是最好的方式,领域层里面只定义领域模型和关注领域逻辑,
EF的CRUD放在基础结构层,切换ORM就真的只需要重新实现一套仓储即可。)
OOA(面向对象的分析,此阶段分析用例,定义领域模型。)
OOD(面向对象的设计,此阶段定义类图,类之间的交互图(时序图等等)。)
OOP(面向对象程序设计语言,封装 继承 多态,根据OOD设计的类图,类之间的交互图输出代码。)
还有哪些设计思想,请多多指教。