关于面向对像、面向组件以及代码脱藕(原)

面向对象

说明:是所有的事物都看成是一个对像,把一个对像看成一个整体,提倡封装继承,通过继承来实现多态的对像以及代码的重用

优点:

1结构更容易理解

2高度封装带来的好处就是可以提供, 方便、简单、针对性强的接口,上层使用起来更容易

缺点:使用继承,会使代码藕合度高,不够灵活,为了重用代码和实现多种不同的对像时,会形成很大的继承树,造成很多冗余的代码


面向组件

说明:是把对像拆分成功能独立的组件,通过不同的组合方式来实现多态的对像和代码的重用

优点:灵活度高,藕合度低

缺点:抽像化,不容易理解,难设计,类泛性,接口泛性,


下面在说下代码的脱藕

比如

A类为a类的管理器或控制器

B类为b类的管理器或控制器

b类会用到A类或a类的数据或方法,a类也会用到B类或b类的数据或方法

这时如果想脱藕有两个办法

1使用三层结构或MVC框架等,将A类和B类的数据都抽离出来,做成各自单独的数据层,a类和b类的方法在A类和B类里封装成对应的方法,这样实际上除了a类和b类完全脱藕,其它的并没有完全脱藕,但由于都只对外提供接口,已经大大的降低了藕度度

这时有个办法可以做成一个大的数据层,实际项目中会有很多个数据层,如果全合到一起就需要做管理,就出现了数据中心,这个以后在讲

2全部使用事件,不管是访问数据还是调用方法,全部使用发事件方式,这样的代码会完全脱藕,但由于事件承载的数据可能太过复杂,所以会使代码写起来会变得十分麻烦


最后总结,如果项目不大,就没必要一定使用三层结构或MVC框架等,或用事件来完全脱藕,这样反而会增加了复杂度和工作量。

但如果是大项目,即使不完全脱藕,也要尽量使用三层结构或MVC框架等的方式降低藕合度,不然项目后期容易造成改一处动全身的死结

实际上我们只要明白了藕合会出现的问题,和避免藕合的方法,并不一定必须使用某种特定方式来脱藕

其实最好是跟据项目情况,设计出既能有效避免模块之间藕合,又适合自己项目的程序架构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值