封装: 常见的编程范式有:过程式编程、面向对象编程、函数式编程,现在函数式编程很火,但是面向对象编程依然是主流。
继承: 继承的目的是为了代码复用。有了封装,有了类和对象这种机制,可以将一些数据和行为封装再一个类里,但是还有问题没解决:如果有几个类有类似或共同的行为,就需要做很多重复性的工作。为了解决这个问题,Java提出了继承的概念。
多态: 多态的提出是为了将解决方案和逻辑复用,实现良好的可扩展性。
面向对象理论的三个基本概念:封装、继承、多态的知识点在上面已经梳理过了,这里给出在OOP方面急需深入的建议。面向对象是一种很好的编程范式,不过我们不能手里拿着锤子就看到啥都是钉子,还需要扩展下自己的视野。这几年非常火的函数式编程范式,就是一种值得学习的编程范式,他跟面向对象不同,卖点在于:函数作为一等公民,函数的调用没有副作用。
再回到面向对象的学习,OOP学完,就可以学习OOD,然后要多做项目,项目做得多了以后,就有机会沉淀出很多经验和固定的套路,这就是设计模式,也值得学习。
基本理论、设计模式都准备好后,应付初级的Java面试就没问题了,不过我们这里还可以再扩展下。设计模式是针对代码级别的套路总结,如果把场景扩大到架构层面,就需要看架构模式了,之前有写过一篇文章总结了常见的架构模式。最后要注意,空学理论没什么用,一定要在项目中应用,否则就是过个眼瘾,没啥价值。
架构模式、设计模式都属于技术范畴,如果要应对更复杂的业务场景,只是基本的OOP和OOD是不够用的,这时候就需要用到DDD(领域驱动设计),领域驱动设计就是为了解决复杂常见而生的。当然,场景可能更加复杂,例如我们要做平台化,那么就需要做进一步的抽象,也就是所谓的领域的领域,这块就比较深了,是我努力的方向。