抽象类是一种自底向上的思考过程, 先有各种子类, 然后针对同一类型的子类的共同实现提取出来, 放到父类中, 对不同的实现方法, 使用抽象方法代替.
接口是一种自上而下的思考方式, 先确定该有哪些行为, 然后针对子类进行各自不同的实现.
抽象类是一种自底向上的思考过程, 先有各种子类, 然后针对同一类型的子类的共同实现提取出来, 放到父类中, 对不同的实现方法, 使用抽象方法代替.
接口是一种自上而下的思考方式, 先确定该有哪些行为, 然后针对子类进行各自不同的实现.
面向对象的代码, 对我来说, 一直感觉很高级, 但是好奇是否真的有企业在用, 因为一直没听过什么人用, 这篇解决了我长久以来以来的困惑.
面向对象的编码方式虽然很好, 但其实并不流行.
真实的项目需要简单易上手, 人人都可以开发, 面向对象的开发方式(充血模型)的门槛还是比较高的.
并且面向对象的开发是需要经过良好的面向对象分析和设计, 这些要求在项目中也很难达到.
所以在企业开发中, Javaver 更多的是 a CRUD boy.
哈希算法在开发中有很常见的应用, 但是也仍然存在一些问题.
在 nginx 中作为一种路由策略, 如果添加或删除路由节点, 会导致路由发生大规模的变化;
在分布式缓存系统中, 如果添加或删除节点, 会导致缓存大规模的失效.
对于这些敏感的使用场景, 哈希算法并不能发挥很好的作用, 因此也就有了改良后的一致性哈希算法.
本篇学习面向对象的四大基本特性的定义及其作用.
封装, 也就是访问控制,
封装可以隐藏一个类或对象的内部实现, 只展示必要的接口行为;
封装限制了外部程序对内部属性的访问, 提高了代码的可维护性;
同时客户端程序员只需要关注公开的方法, 提高了代码的易用性.
无论是设计单个对象, 还是多个对象之间的关系, 都要强调外部行为, 忽略其使用细节, 也就是面向接口编程;
良好的抽象可以设计出更易维护和扩展的程序.
从语言的语法机制层面, 定义对象与对象之间的 is-a 关系, 提高了代码的复用性, 但同时也可能带来代码的高耦合.
Java 只支持单继承, 确保了所有对象都有统一的行为, 方便开发;
有些语言支持多继承, 如 C++, 语言更灵活, 但是会出现菱形继承问题, 需要程序员自己去构建统一的对象层次结构.
父类对子类进行引用, 程序可以根据父类所引用的实际子类而产生不同的行为;
通过语言的支持, 多态提供了面向接口编程的一种应用方式, 提高了代码的复用性, 以及可扩展性.
本篇提供了整个学习过程的框架, 以及学习重点.