第二周的架构师训练营结束了,这周很多东西都还没有好好复习。
一、计算机的发展史
早在1700 年,计算机还没有诞生的时候,程序语言就已经诞生了,当时莱布尼兹就期望将各种事物都通过一种逻辑语言进行描述。随后人类将这种编程思想用在纺织机上,用在纸带机上,直到第一台计算机诞生,再到随后形形色色的编程语言出现。
从汇编语言,到 basic 语言,再到现代的高级语言,人们不断进化计算机和编程语言,用他们来解决现实世界的问题,发展现代的工业。
当产品经理给你提了需求,你用 Java 语言来实现的时候,有没有思考过,你已经是站在巨人的肩膀上来解决问题了呢?若是没有前人的成果,我们该怎么办。
二、什么是面向对象
说到面向对象,就不得不提到面向对象的三要素:封装、继承和多态。
面向对象可以让系统强内聚,低耦合,从而使系统:
- 易扩展,易于增加新的功能
- 更强壮,不容易被粗心的程序员破坏
- 可移植,能够在多样的环境中运行
- 更简单,容易维护
三、设计原则
我们在面向对象过程中,应该遵循下面的设计原则
-
开闭原则
对于扩展开放,对于修改关闭
使用设计模式来去除掉代码中的if else,面向接口编程,使得系统更加的健壮 -
依赖倒置原则
高层模块不应该依赖底层模块,而是大家都依赖抽象
抽象不应该依赖实现,而是实现依赖于抽象
那么,倒置的是什么?倒置的是模块和包的依赖关系,说白了,就是高层组件来定义他们想要的接口,底层组件来实现。而不是底层组件为了抽象,而去实现高层组件的接口。这两种情况的职责是不一样的。一个是高层来定义规范,底层实现,一格是底层实现,让高层用。这二者的职责不一样。 -
好莱坞原则
你不要来找我,我会打电话给你
好莱坞原则,是说底层组件挂靠在高层组件上,由容器来调用或者取得底层组件。这样底层组件可以轻易的升级和更改。 -
里氏替换原则
子类型必须能够替换掉它们的基类型
也即是说,子类型尽量不要复写父类的方法
子类型的访问控制不能比父类严格 -
单一职责原则
一个类,只有一格引起它变化的原因。一个类,尽量只负责一件事情。
这个原则,也是我们编程中,通常会遵循的内容。 -
接口隔离原则
不应该强迫客户依赖它们不需要的方法
四、设计模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式,共七种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
五、一点思考
架构师,应该熟悉常用的设计模式,并且应该看一看经典框架(spring)源码,体会里面设计模式的使用。
在平时编码中,尽量让自己养成代码洁癖的习惯,眼里容不得坏代码,定时去查看自己写过的旧代码,看看哪里是不是能用设计模式优化。
让设计模式内化成我们骨子里的东西,一种境界就是,我在写出设计模式代码的时候,不会意识到已经使用了设计模式,而是代码就应该这么写,哈哈,架构师们,加油!