SDP-软件设计模式

SDP-软件设计模式

  • 设计原则
    • 一、开闭原则 OCP
    • 二、里氏替换原则 LSP
    • 三、依赖倒置原则 DIP
    • 四、单一职责原则 SRP
    • 五、接口隔离原则 ISP
    • 六、迪米特法则 LoD
    • 七、合成复用原则 CRP
  • 设计模式
    • 创建型模式 Creational Patterns
    • 结构型模式 Structural Patterns
    • 行为型模式 Behavior Patterns
  • 设计语言
    • 类图

设计原则

一、定义		提高软件系统的可维护性、可复用性、可扩展性、灵活性的七条原则
二、内容
	[1]开闭原则		Open Closed Principle			使用继承		子类与基类相同点
	[2]里氏替换原则	Liskov Substitution Principle	继承避免重写	子类与基类不同点
	[3]依赖倒置原则	Dependence Inversion Principle	面向接口编程	模块交互通过公约	
	[4]单一职责原则	Single Responsibility Principle	约束类
	[5]接口隔离原则	Interface Segregation Pinciple	约束接口
	[6]迪米特法则		Law of Demeter
	[7]合成复用原则	Composite Reuse Principle
三、软件实体
	[1]模块
	[2]类、接口
	[3]方法

一、开闭原则 OCP

一、定义		使用继承 = 扩展开放,修改关闭
二、含义		需求改变时,在不修改源码前提下扩展模块功能,使其满足新的需求
三、作用		
	[1]软件测试		原有代码不测,扩展代码测试
	[2]代码复用		粒度越小,抽象编程,提高复用
	[3]软件维护		易于扩展维护
四、实现			抽象约束,封装变化		
	[1]抽象层		保持软件架构稳定		接口、抽象类
	[2]具象层		根据需求派生实现类		实现类、派生类
五、示例		
	[1]Abstract Subject抽象类	桌面
	[2]Specific Subject具象类	主题A、主题B

二、里氏替换原则 LSP

一、定义		扩展继承 = 子类扩展父类,避免重写父类
二、含义		继承的使用场景
三、作用
	[1]实现开闭原则,反应基类与子类的关系
	[2]克服继承问题,重写父类造成的可复用性变差
	[3]保证动作正确,扩展不会引入新的错误
四、实现		子类扩展父类,不能改变父类
	[1]子类新增方法		支持
	[2]子类重写方法		避免
五、示例		几维鸟不是鸟,取消原来继承关系,定义高级父类
	[1]错误关系		鸟[]:几维鸟[重写飞行] 
	[2]修正关系		动物:几维鸟

三、依赖倒置原则 DIP

一、定义		
	[1]高层模块不依赖底层模块,两者依赖抽象
	[2]抽象不依赖细节,细节依赖抽象
二、含义		以抽象为基础搭建架构
	[1]抽象		接口、抽象类		制定规范、契约
	[2]细节		实现类			展现细节
三、作用		
	[0]实现开闭原则,降低客户与实现模块的耦合
	[1]降低类间耦合性
	[2]提高系统稳定性
	[3]减少并行开发风险
	[4]提高可读性可维护性	
四、实现		面向接口编程,而非面向实现编程
	[1]每个类		尽量提供接口、抽象类,而非具体类
	[2]变量类型		尽量声明接口、抽象类
	[3]使用继承		遵守LSP
五、示例		顾客购物程序
	[1]抽象网店		Shop.sell()
	[2]具象网店		ShopA.sell()、ShopB.sell()
	[3]顾客		 Customer.shopping( shopA.sell(),shopB.sell() )

四、单一职责原则 SRP

一、定义		一个类有且仅有一个引起变化的原因,否则应该拆分
二、含义		约束类,针对实现、细节
	控制类的粒度,解耦对象,提高内聚性
三、作用
	[1]降低类复杂度
	[2]降低变更风险
	[3]提高类的可读性、系统可维护性
四、实现		分离职责、封装类、模块
五、示例		学生工作管理程序
	[1]学生工作		生活辅导()、学业指导()
	[2]辅导老师		生活辅导()
	[3]学业老师		学业指导()

五、接口隔离原则 ISP

http://c.biancheng.net/view/1330.html
一、定义		要为各个类建立专用接口
二、含义		约束接口,针对抽象、整体框架
三、作用
	[1]
	[2]
	[3]
	[4]
	[5]
四、实现

五、示例

六、迪米特法则 LoD

最少知识原则		Least Knowledge Principle
一、定义

七、合成复用原则 CRP

组合/聚合复用原则		Composition/Aggregate Reuse Principle
一、定义		软件复用,优先使用组合、聚合等关联关系,其次考虑继承关系;

设计模式

一、定义		解决设计问题的方案模板
二、本质		在约束条件下,完成程序目标的设计方案
三、要素
	[1]模式名称		PatternName
	[2]问题			Problem				适用环境,约束条件
	[3]解决方案		Solution			组成部分,各自职责,相互关系,协作方式
	[4]效果			Consequence		时间空间、灵活性、扩充性、可移植性
	[5]动机
	[6]结构
	[7]模式角色
	[8]合作关系
	[9]实现方法
	[10]模式扩展
	[11]相关模式
	[12]已知应用
	[13]例程
	[14]适用性	
四、分类
	[一]根据作用范围划分
    	[1]类模式		处理父类与子类关系,通过继承实现,编译时固定		静态【继承】
    	[2]对象模式		处理对象与对象关系,通过聚合实现,运行时可变		固态	【聚合】
	[二]根据目的划分
    	[1]创建型模式		分离对象的创建、使用
    	[2]结构型模式		组合类、对象的复杂结构
    	[3]行为型模式		协调类、对象的复杂任务,分配职责
 五、分析思路:
	[1]约束条件
	[2]程序目标
	[3]
六、目的
	[1]通用
	[2]复用

创建型模式 Creational Patterns

一、类模式
	[1]工厂方法模式	Factory Pattern 
二、对象模式
	[2]单例模式		Singleton Pattern 		
	[3]原型模式		Prototype Pattern 
	[4]抽象工厂模式	Abstract Factory Pattern 
	[5]建造者模式		Builder Pattern

结构型模式 Structural Patterns

一、类模式
	[1]适配器模式_类		Adapter Pattern
二、对象模式
	[2]适配器模式_对象	Adapter Pattern
	[3]代理模式			Proxy Pattern 
	[4]桥接模式			Bridge Pattern
	[5]装饰模式			Decorator Pattern
	[6]外观模式			Facade Pattern
	[7]享元模式			Flyweight Pattern
	[8]组合模式			Composite Pattern

行为型模式 Behavior Patterns

一、类模式
	[1]模板模式		Template Pattern 
	[2]解释器模式		Interpreter Pattern
二、对象模式
	[1]策略模式		Strategy Pattern 
	[2]命令模式		Command Pattern
	[3]状态模式		State Pattern
	[4]责任链模式		Chain of Responsibilty
	[5]迭代器模式		Iterator Pattern
	[6]备忘录模式		Memento Pattern
	[7]观察者模式		Observer Pattern
	[8]中介者模式		Mediator Pattern
	[9]访问者模式		Visitor Pattern

设计语言

一、定义		同一建模语言	Unified Modeling Language
二、
三、分类
	[1]用例图
	[2]类图
	[3]对象图
	[4]状态图
	[5]活动图
	[6]时序图
	[7]协作图
	[8]构件图
	[9]部署图
四、语法
	可见性		
	[1]Public		+
	[2]Private		-
	[3]Protected	#
	[4]Friendly		~

类图

一、类		Class
	定义		具有相同属性、方法、关系的对象的抽象。
	属性		封装数据、行为
	表示		分割线矩形
			[1]类名		Name
			[2]属性		Attribute		[可见性]属性名:类型[=默认值]
			[3]操作		Operations		[可见性]操作名:(参数列表)[:返回类型]
二、接口		Interface
	定义		具有结构、抽象操作,没有属性;
	属性		本身不可实例化,子类可以实现
	表示		小圆圈
			[1]接口名		Name
			[2]操作		Operations		[可见性]操作名:(参数列表)[:返回类型]
三、类图		ClassDiagram
	定义		显示系统的类、接口的静态结构和关系、协作的静态模型
四、类间关系
	[一]依赖关系	Dependency		
		属性		使用关系
		组成		[1]虚线		
				[2]单箭头			使用类,指向依赖类
		示例		人、手机
	[二]关联关系	Association		
		属性		引用关系
		组成		[1]实线		
				[2]n箭头				使用类,指向关联类
				[3]两端标注			角色名				
		示例		老师、学生
	[三]聚合关系	Aggregation
		属性		关联关系				整体与局部has-a		局部可以脱离整体
		组成		[1]实线			
				[2]空心菱形			指向整体
		示例		大学、老师
	[四]组合关系	Composition
		属性		关联关系				整体与局部cxmtain-a	局部无法脱离整体
		组成		[1]实线
				[2]实心菱形			指向整体
		示例		头、嘴
	[五]泛化关系	Generalization
		属性		继承关系				父类与子类is-a
		组成		[1]实线
				[2]空心三角箭头		指向父类
		示例		人、学生+教师
	[六]实现关系	Realization
		属性		实现关系				接口与实现
		组成		[1]虚线
				[2]空心三角箭头		指向接口

你可能感兴趣的:(JVMAndJDP)