架构师是怎样炼成的 -2-2- 软件设计原则

用户头像
闷骚程序员
关注
发布于: 2020 年 06 月 17 日

1. 面向对象编程与面向对象分析

  1. 面向对象编程不是使用面向对象的编程语言进行编程,而是利用多态特性进行编程。

  2. 面向对象分析是将客观世界,即编程的业务领域进行对象分析。

  3. 充血模型与贫血模型

  4. 领域驱动设计DDD

主要是把客观世界的事件分析清楚,客观对象的关系分析清楚。哪些功能是属于哪些对象的。



2. 框架设计

1. 什么是框架

框架是用来实现某一类应用的结构性的程序,是对某一类架构方案的可复用的设计和实现。

  1. 简化应用开发者的工作

  2. 实现多种设计模式,使应用开发者不需要花太大力气,就能设计出结构良好的程序来。

框架对于一个架构师在团队中的地位是非常重要的。确定架构师在团队中的技术地位。是否影响到其他工程师。形成团队成员的依赖关系。



3. 怎么区分框架和工具

  1. 工具就是需要的时候直接调用就可以了,如:log4j这样的日志

  2. 框架是用户在框架之上写代码,然后框架调用。框架其实是一个半成品的程序。如:junit测试框架。



对于框架而言:框架是架构落地的保证。



3. 软件设计原则

1. 开闭原则

  1. 对扩展是开放的

  2. 对于更改是封闭的。(当有新的需求来了,要修改已经有的代码,函数,类等)

  3. 简而言之:不需要修改软件实体(类,模块,函数等),就应该能实现功能的扩展。



传统的扩展模块的方式就是修改模块的源代码。如何实现不修改而扩展新功能呢?

  1. 关键是抽象

2. 依赖倒置原则

  1. 高层模块不能依赖低层模块,而是大家都依赖抽象。

  2. 抽象不能依赖实现,而是实现依赖抽象。

定义抽象的时候,并不知道具体的实现是什么样子的,但是确规定的实现里面必须要有这么一些接口。

高层定义接口,低层定义实现。



3. 好莱坞原则(框架的核心)

  • Don't call me, I'll call you.

倒转的层次依赖关系。框架定义一些接口,用户实现,然后框架调用用户实现,从而完成业务。

结构师的基本思维方式。



4. 里氏替换原则

在程序中,任何能用基类的地方,必须能用子类替换掉基类。 这个是按场景来说的。在应用的场景中,使用基类的地方能不能用子类类代替。如:正方形继承自长方形。在计算面积的时候就违反了此原则。因为长方形有设置长和宽,但是正方形长和宽是不一样的。



5. 接口隔离原则

不应该强迫客户依赖它们不需要的方法,不把用户不需要的接口暴露出去,使用的时候就更加简洁。

用户头像

闷骚程序员

关注

还未添加个人签名 2018.11.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师是怎样炼成的-2-2-软件设计原则