学习笔记: 架构师训练营 - 第三周
1、OOA、OOD、OOP
OOA(Object Oriented Analysis:面向对象分析法)
一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题
只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象
强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析
OOD(Object Oriented Design:面向对象设计)
根据需求决定所需的类、类的操作以及类之间关联的过程,对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受
是管理程序内部各部分的相互依赖。为了达到这个目标,OOD要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,只通过接口相互交流
是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用OOD这种设计范式,我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为
OOP(Object Oriented Programming:面向对象编程)
以建立模型体现出来的抽象思维过程和面向对象的方法
模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在所涉及的范围内更普遍、更集中、更深刻地描述客体的特征
通过建立模型而达到的抽象是人们对客体认识的深化
2、OOD设计原则
开闭原则(Open-Closed Principle, OCP)
依赖倒置原则(Dependence Inversion Principle, DIP)
里氏替换原则(Liskov Substitution Principle,LSP)
单一职责原则(Single Responsibilities Principle,SRP)
接口隔离(Interface Segregation Principle, ISP)
3、设计模式
3.1 什么是设计模式
每种设计模式都描述一种问题的通用解决方案,这种问题在我们的环境中不停出现
一种可重复使用的解决方案
3.2 学习方式
看这些设计模式是解决什么问题,
如何去解决这个问题,
在解决这个问题过程中体现出的优势
有没有更好的解决方案
3.3 设计模式的组成
模式的名称:由少量的字组成的名称,有助于我们表达我们的设计
待解决的问题:描述了何时需要用这种模式,以及运用模式的环境
解决方案:组成设计的元素(类和对象)、它们的关系、职责以及合作。但这种解决方案是抽象的,不代表具体的实现
结论:运用这种方案所带来的利和弊,主要是指对系统的弹性、扩展性和可移植性的影响
3.4 设计模式中的分类
从功能分
创建模式
对象的实例化过程的抽象,
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构模式
将类或者对象结合在一起形成更大的结构
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为模式
对在不同对象之间划分责任和算法的抽象化
策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
从方式分
类模式
对象模式
3.5 Junit 使用的设计模式
使用模板方法模式、策略模式,组合模式、装饰器模式
3.6 spring中使用到的设计模式
控制反转(IOC):是一种解耦的设计思想
依赖注入(DI):将实例变量传入到一个对象中去
工厂设计模式:Spring使用工厂模式通过
BeanFactory
、ApplicationContext
创建 bean 对象单例设计模式:Spring 中的 Bean 默认都是单例的。
代理设计模式: Spring AOP 功能的实现。
模板方法:Spring 中
jdbcTemplate
、hibernateTemplate
等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式观察者模式:Spring 事件驱动模型就是观察者模式很经典的一个应用。
适配器模式:Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配
Controller
装饰者模式:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据
版权声明: 本文为 InfoQ 作者【四夕晖】的原创文章。
原文链接:【http://xie.infoq.cn/article/fee12525ea20d1699de0ca185】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论