架构师训练营第二周学习总结
1.面向对象
1).面向对象分析是指,将客观世界,即工作中面对的业务领域进行对象分析
2).面向对象编程三大特性:封装、继承、多态;利用面向对象的特性进行编程
多态整理如下:
2.框架
1).框架:对某一类结构方案的可复用的设计和实现,比如:Tomcat,Spring,MyBatis 等
可以简化工程师的工作,提高效率;大家使用你的框架使你成为最核心的那个人
架构师应该关注框架:框架选型、开发、维护
2).框架是实现架构的手段,是架构落地的保证。
3).框架 VS 工具:谁调用谁;框架调用我的代码,我的代码调用工具,比如:junit 框架、log4j 工具。
3.电话拨号案例
对象:所有名词可能为对象。
面向过程的设计
类图
合作图(协作图)
对象、消息、序号
坏味道
僵硬、脆弱、不可移植
改进 1:Button 实现继承
改进 2:策略模式
聚合用来表示集体与个体之间的关联关系
改进 3:适配器模式
改进 4:观察者模式
4.软件设计原则
软件设计臭味
1).软件设计最终目的:高内聚,低耦合
易扩展、更强壮、可移植、更简单
2).坏味道:僵化、脆弱、牢固性、粘滞性、不必要的复杂性、不必要的重复、晦涩性
例子:读入字符并打印
5.设计模式原则
1).开/闭原则(OCP):对于扩展开发、对于更改封闭。
2).依赖倒置原则(DIP):高层模块不能依赖低层模块,而是大家都依赖于抽象
3).里氏替换原则(LSP)
4).单一职责原则(SRP):
5).接口分离原则(ISP)
6.设计模式记录
单例模式
1. 策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。
其中策略模式
Context 封装角色它也叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。不依赖于底层的模块,只去按照抽象接口去实现自己的方法。这就是依赖倒置
Strategy 抽象策略角色策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性
ConcreteStrategy 具体策略角色实现抽象策略中的操作,该类含有具体的算法
2.适配器模式
Target 目标角色:把其他类转换为我们的期望接口;
Adaptee 源角色:要被转换的类或对象
Adapter 适配器角色:把源角色转换为目标角色,通过继承或是类关联的方式
3.观察者模式
观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新
Subject 被观察者:定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者
Observer 观察者:观察者接收到消息后,即进行 update(更新方法)操作,对接收到的信息进行处理
ConcreteSubject:具体的被观察者定义被观察者自己的业务逻辑,同时定义对哪些事件进行通知。ConcreteObserver:具体的观察者每个观察在接收到消息后的处理反应是不同,各个观察者有自己的处理逻辑。
评论