写点什么

基础框架第二周总结「架构师训练营第 1 期」

用户头像
天天向善
关注
发布于: 2020 年 09 月 26 日

编程语言的实质

用计算机来解决现实世界的问题

面向对象的三特征

面向对象的三特征是封装,继承,多态。

封装可以认为是它是给你一台电脑,你不需要知道里面的细节,有什么元器件组件,隐藏了实现,表现为 protected,private,public,default 不同的关键字,定义类,接口与方法,对于子类,不同包的可见性。另外调用者只知道接口,不需要见到其细节,也体现了封装。

继承,子类继承父类,则共用父类的属性与方法,体现了复用。Is-a 的关系,如果 has-a 包含一个,则是组合的关系

多态,定义接口,可以有多个实现类,或是考虑接口的依赖,聚合等关系,表现出对扩展开放,对修改关闭。程序使用抽像的父类或接口编程,运行期注入不同的子类,程序就可以灵活的表现不同的形态,使用同一个接口,不同实例而执行不同方法。例如打印机打印接口,使用黑白打印机实例打印黑白照片,使用彩色打印机实例打印彩色照片。

 

对象之间强弱关系

依赖<关联<聚合<组合

依赖是弱关联,是偶然临时的关系,表现为方法参数

关联是强关系,类之间的关系,一对一,一对多,班级与学生的关系,一对多,表现为类的成员变量

聚合,整体与部分的关系,是关联的特例,has a 拥有的关系,与关联一样表现为类的成员变量

组合,与聚合更强,整体不存在了,部分也死了,contain a 包含的关系,与关联一样表现为类的成员变量

 

面向对象的目的

高内聚,低藕合,从开发到需求变更,增加功能,修改功能,上线部署,版本迭代,线上运维等软件生命周期过程中都更容易操作。

扩展,新增功能

强壮,不容易被粗心的程序员破坏

移值,可以部署到不同的环境中运行

简单,阅读代码容易,部署,启动关闭等运维都容易

 

代码的臭味

易扩展-》僵硬,改不动

强壮-》脆弱,改一个功能,另外一个功能受到了影响,关联影响范围大

可移值-》不可移值,例如 window 中开发 java 软件,在 linux 中跑不了,使用了 window 的特性或是依赖 window 的组件

简单-》晦涩,复杂难理解

过度设计,类过多等

大量的拷贝复制相同的代码

 

面向对象的原则

设计原则有:开闭原则,依赖倒置原则,里氏替换原则,单一职责,接口隔离原则

开闭原则:对扩展开放,对修改关闭

依赖倒置:高层与低层模块都依赖一个抽像,并且这个抽像由高层定义

里氏替换:is a 的关系,并且结合实际环境,判断是否合理,调用处可以使用子类变成父类也不受影响

单一职责:接口的功能单一,一个接口类只能一个方法,当然要结合实现情况分组,结合调用的客户端的实际情况,与扩展情况将接口分组,以免接口类过多

接口隔离:客户端只需要知道自已知道的功能,知道的越多,软件越危险

 

开发一个基础框架

设计与开发一个框架是架构师的基本功,基础框架可以规范约束开发。

设计一个框架最重要的一个原则是依赖倒置,高层与低层模块,都依赖抽像,而且这个抽像不是低层的,而是高层的。

我们常用的开发是,定义接口,与实现这个接口功能,然后做为生产者把接口提供给对方,对方作为消费者调用接口实现代码。

而开发一个框架,它的思路是相反的,高层使自已定义的接口,实现自已要实现的功能,开发人员根据这个规范实现业务功能的开发,这就是相反思路,则是依赖倒置。

依赖倒置定义了开发的顺序,先有高层模块的功能与抽像实现,后有低层模块的开发。也定义了模块与包的结构,抽像与高层模块的代码都是一体的。

一个软件的开发,最好的方式是可复用,可扩展,这样则可以减少技术债务,代码也能变成有条理,灵活。


发布于: 2020 年 09 月 26 日阅读数: 38
用户头像

天天向善

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
基础框架第二周总结「架构师训练营第 1 期」