里氏替换原则在现实中的应用
来源:互联网 发布:淘宝的进货渠道 编辑:程序博客网 时间:2024/05/01 01:41
我记得在之前xx大型的互联网公司,该公司只能算是很伪的互联网公司,以业务为主,非技术指导的公司,所以里面的写业务的人员水平也是参差不齐,代码在不停地重构,没过多久又会发现代码的维护难度在增加,然后又是重构,出现了恶性循环。每次来了新需求,都会头疼得紧,担心需求的改变会对上一个版本有很大的冲击。今天来介绍下该业务代码简单的架构知识。
先介绍下该代码设计的背景知识。因为是app的服务端代码,所以需要支持每一个客户端的代码,也就是说,每一个版本的开发都必须支持上一个版本。所以之前的代码里面不时会出现if(dataversion>xx){}else{},混乱不堪。最后在领导的主持下,决定对代码进行一次重构,以适应这种快速迭代的过程。最后经过一个版本的时间,出来了一个新的架构:花了一个粗糙的图,基本的意思相信大家都能看的明白:每个版本的业务代码都会继承上一个版本的code,如果对上一个版本有修改或者增加需求的话,直接override掉父类的方法。
其实这种做法极大地违背了里氏替换原则:即父类被子类修改掉了。这也造成了代码的极度膨胀,以及混乱,让新人对代码的了解增加了很大的难度,因为大家不知道,该功能是否在前一个版本被重写掉。所以个人认为可以如下的架构
这样的话,就不会对之前的类进行修改,那有些人会问,这样写的话不就会导致abstract类的膨胀以及修改。我的回答是我们这时候就需要遵守另外一个原则了,职责单一原则。对于每一个功能都能够单一出来,版本迭代的大部分情况下,就只需增加新的功能,而不会去修改前一个版本的内容,如果对前一个版本有改动的话,只需新增一个分支。我们始终要遵守的主旨是:对非抽象方法不修改。
个人拙见,请勿见笑!
- 里氏替换原则在现实中的应用
- 里氏替换原则
- LSP(里氏替换原则)
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 里氏替换原则
- 第二章2.30
- WEKA使用教程(经典教程转载)
- 阶乘之和
- Linux如何根据IP地址反查hostname
- Android—eclipse安装sdk后没有sdk manager解决办法
- 里氏替换原则在现实中的应用
- 计蒜客--第28题:等和的分隔子集
- rpm 和 yum 搭建php环境--linux安装(四)
- ListView原理学习与优化总结
- 什么是双缓冲,平滑地滚动页面的实现原理,ARGB8888 和ARGB1555
- URI和URL的区别
- PowerDesigner15在win7-64位系统下对MySQL 进行反向工程以及建立物理模型产生SQL语句步骤图文傻瓜式详解
- Android的媒体管理框架:Glide
- android AsyncTask介绍