什么是面向对象思想?
代码优化好处?
设计模式和面向对象思想的关系?
不用设计模式或者不可以使用面向对象思想会有什么问题?
问题或或者场景?
- 生活中: 如曹操 写的诗句 “喝酒唱歌,人生真爽” 到 “对酒当歌,人生真爽” 再到 “对酒当歌,人生几何”,臣子命令工匠连夜印刷,作为小小印刷工匠的你是不是想骂娘 “怎么老是改呢,还让不让人睡觉了”(背景注意: 当时活字印刷术还没有发明呢)
- 一个 全新web项目的开发过程中,产品不停改需求调整需求,是不是很苦恼,好的代码风格组织结构(使用面向对象和设计模式) 是不是能够从容应对需求改变,或者达到尽量少改动代码效果呢?
- 在多个开发人员共同开发过程中,有些功能是不是能共用呢?
- 在一个复杂的功能,开起来不好拆开,分给一个人任务量有点大,写在一个文件中又容易冲突,难道不能用(面向对象的思想)拆分任务?
- 在一个web项目的后期的几次迭代,可能会经常调整某些功能
- 或者是有着复杂逻辑项目,间隔一年又让你改功能,怎么样做才利于一年后的工作?
- 公司接回来的外包项目,他的代码组织的怎么样?影响你的阅读效率,及接受程度。如果你是原写代码人会怎么办
- 一个人或几个人写一个开源项目,重要的一点,就是代码让大多人易于理解
所以呢!总结下要求,就是我写的代码要
- 易于理解 !!! 对自己易于理解,利于别人理解,对间隔时间长情况下易于理解。
- 易于复用 !!! 不要重复写一些东西,和他人协作开发更应该如此
- 易于拆分 ! 拆分关联度高模块,分工开发
- 易于层层理解! 间隔时间长,或者写的代码其他人要看,或者自己看,能快速找到位置,不用关心无关部分代码
- 易于应付可能的变化 ! 如不停改需求,改条件等,做到另可能少改动文件数量(编译型语言更应如此),和方法数量
- 易于代码编辑器的自动提示和自动生成! 像接口定义,抽象类,抽象方法的 定义等可以起到这方面作用当然还有其他方面作用如:协作分工,统一要求功能等左右
- 易于扩展! 在尽可能少的改动下,新增功能,如只是新增个子类,价格配置等就能实现
设计模式与面向对象思想的关系?
首先说面向对象思想,和函数式或者流程式编程对应。 面向对象编程最重要的是用到类,对象概念。 而设计模式的学习是为了 更好的应用好类,对象 ,最终达到的目的是代码 易于... 易于... 的目标
评价一个项目程序的指标?
- 耦合度
面向对象的原则? 详细的理解参考另一篇博客
1. 单一职责原则。 怎么判断是否一个类有多种职责? 如果能够想到多于一个的动机去改变一个类,那这个类就具有多于一个的职责。
2.开放-封闭原则。 一句话描述: 对于扩展是开放的,对于更改是关闭的
开放封闭的呈现或表现,类中举例: 如 有一个运算父类,有四个运算子类 :加法类,减法类,乘法类,除法类。再加增加一个幂运算,就不用改原来的(封闭),只需要新增一个幂运算类(开放)
3. 依赖倒转原则。