封装
封装也叫作信息隐藏或者数据访问保护
对于封装这个特性,我们需要编程语言本身提供一定的语法机制来支持。这个语法机制就是访问权限控制。
如果我们对类中属性的访问不做限制,那任何代码都可以访问、修改类中的属性。属性可以随意被以各种奇葩的方式修改,而且修改逻辑可能散落在代码中的各个角落,势必影响代码的可读性、可维护性。
除此之外,类仅仅通过有限的方法暴露必要的操作,也能提高类的易用性。
抽象
抽象讲的是如何隐藏方法的具体实现,让调用者只需要关心方法提供了哪些功能,并不需要知道这些功能是如何实现的。
抽象这个特性是非常容易实现的,并不需要非得依靠接口类或者抽象类这些特殊语法机制来支持。因为类的方法是通过编程语言中的“函数”这一语法机制来实现的。通过函数包裹具体的实现逻辑,这本身就是一种抽象。
抽象作为一种只关注功能点不关注实现的设计思路,正好帮我们的大脑过滤掉许多非必要的信息。
继承
继承是用来表示类之间的 is-a 关系。从继承关系上来讲,继承可以分为两种模式,单继承和多继承。
为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持不过,有些编程语言只支持单继承,不支持多重继承。
继承最大的一个好处就是代码复用。不过,这一点也并不是继承所独有的,比如利用组合关系而不是继承关系。
继承的概念很好理解,也很容易使用。不过,过度使用继承,继承层次过深过复杂,就会导致代码可读性、可维护性变差。
多态
多态是指,子类可以替换父类
多态实现有继承加方法重写,利用接口类语法,和利用 duck-typing语法(只要两个类具有相同的方法,就可以实现多态,并不要求两个类之间有任何关系)等三种方式。
多态特性能提高代码的可扩展性和复用性。
多态也是很多设计模式、设计原则、编程技巧的代码实现基础。
此文章为 8 月Day5学习笔记,内容来源于 极客时间《设计模式之美》。