你的位置:首页 > ASP.net教程

[ASP.net教程]浅谈解耦的意义


              谈到解耦,就要提到设计模式,设计模式来源于分析模式,设计模式是分析模式的具体现话。
              举个例子,我们购买一个大件,像冰箱。 

              从客观的角度分析,这种东西不是我们直接拿走的,那么我们简化这个流程就是:你选择冰箱,给钱,然后营业员给你生成订单,送货人发货。如果说我们把选择冰箱,下单付款,送货期间作为粉色的时间,然后,我中间牵扯到的营业员,送货人,客户这类的参与者作为绿色,最后中间的权限例如业务员收钱的时候,从数据考虑,他是操作财务表的权限,订单是操作订单表的权限,这部分权限作为黄色,在领域模型中,在客观世界中是绿色赋予了黄色在粉色期间执行操作。客观总结起来就是指定人,拥有指定权限,做指定的操作

              从三层的角度分析,我们是有数据表的,用户表,订单表,送货表等等,在数据层和业务层到底分离的是什么,还是这个购物的例子,打个不恰当的比方:业务员收钱,为其生成订单,实际上就是在操作数据,那么数据层拿走了这部分的工作。剩下的工作是,业务员哪儿来的收钱和操作财务权限?业务员怎么知道是谁要购买(谁是参与者)?这些就交给了逻辑层

              将不同的职责封装到不同的类或者模块中,不正是面向对象的基本原则之一吗(单一职责原则)。但我们使用抽象工厂的设计模式时,降低了数据层和逻辑层之间的依赖关系,创建对象依赖于工厂类和一套抽象接口依赖倒置的核心思想就是抽象上层模块调用接口,下层模块实现接口。

              说到这里是解耦的过程,那么解耦的意义呢? 

              就像我们开发过程中一个人,从前台到后台到维护,到数据库全管,就不如分工合作,内部的联系越少,一个系统就越稳定,俗话说,多一个事不如少一事。还是用实际的来说话:业务是会变化的,但是操作数据库,终归是那些方法,业务改变的时候,我们无需改变数据层。即使需要新的数据层方法,也只是添加一个方法,无需改变业务层的旧代码。刚才我们所说的又好像是分工的好处?其实来说,三层本身就是一个解耦的架构,三层的本身也是为可扩展性而生的,只是我们还需要继续使用各种模式解耦,我们只能无限降低耦合度,但并不能根除,因为彼此失去了关联就是去了意义。开放封闭原则说道:软件实体(类,模块,方法等)应该是可扩展的,意思是软件模块的功能可以变化,但是在拓展新功能的同时,不需要修改原有代码,更不会影响到原有代码。怎么能做到开放和封闭呢?还是抽象抽象的东西是稳定的,通常不需要修改,抽象的东西可以具体化为不同的实例,实现扩展。

              中国梦就是个很好的面向对象设计。

              中国梦可拓展:它可以拓展为农民的中国梦(拥有自己的土地),商人的中国梦(生意兴隆等),运动员的中国梦(成为冠军)

              中国梦很稳定:虽然梦想千差万别,但最终都可以归于不变的中国梦。梦想的基类永不变。