1 / 99
文档名称:

软件设计模式sdp-第5章.pptx

格式:pptx   大小:1,749KB   页数:99页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式sdp-第5章.pptx

上传人:bai1968104 2022/7/31 文件大小:1.71 MB

下载得到文件列表

软件设计模式sdp-第5章.pptx

相关文档

文档介绍

文档介绍:软件设计模式
第5章 GoF结构型模式
结构型(Structural)模式
GoF结构型模式通常关注
调整设计类或对象之间的关联来达到降低代码耦合度
如桥模式,门面模式
提高程序性能
如享元模式,代理模式,享元模式
扩展额外的操作配器
Spring MVC工程师设计源码时,,
DispatcherServlet使用HandlerAdapter的handle()服务适配控制器处理Http请求后的结果
Spring MVC使用适配器适配不同类型控制器的类结构
桥(Bridge)模式
桥(Bridge)使用组合关系将代码的实现层和抽象层分离,让实现层与抽象层代码可以分别自由地变化
使用桥模式的场景有:
1)抽象层代码和实现层代码分别需要自由扩展;
2)减弱或消除抽象层与实现层之间的静态绑定约束;
3)向客户端完全隐藏实现层代码;
4)需要独立封装或复用实现层代码。
桥模式的类结构
桥模式代码分层结构
桥模式不同类型对象之间的协作时序
使用桥模式的练****br/>COS系统要支持不同的关系数据库类型,将来升级时,还可能会扩展至非关系数据库。数据库访问日志不区分数据库类型,日志文件保存格式为XML或JSON
COS要支持不同类型的数据库,且数据服务层代码需要具有可扩展性,以备升级扩展
当数据库类型扩展时,应尽量减小对客户端代码的影响
使用桥模式设计的COS数据服务层
public abstract class DBManager {
protected DBImpl dbImpl;// 数据库访问的实现
/**
* 向数据库中持久化一个对象
*/
public boolean persist(Object o) {
log("插入一个对象",o);
return (o);
}
/**
* 对数据库中已有对象修改
*/
public boolean modify(Object o) {
log("修改一个对象",o);
return (o);
}
/**
* 从数据库中删除一个对象
*/
public boolean remove(Object o) {
log("删除一个对象",o);
return (o);
}
/**
* 根据条件查询数据对象
*/
public Object get(Object o) {
log("获取数据对象",o);
return (o);
}
/**
* 数据库访问日志记录
*/
protected abstract void log(String operation,Object o);
}
public class MySQLDBImpl implements DBImpl {
/**
* 将对象数据持久化到MySQL数据库
*/
***@Override
public boolean insert(Object o) {
boolean result;//持久化结果
/**
* 解析o,生成面向MySQL表的SQL语句
* 访问MySQL数据库等代码省略
*/
return result;
}
/**
* 修改MySQL表中的对象数据
*/
***@Override
public boolean update(Object o) {
boolean result;//访问结果
/**
* 解析o,生成面向MySQL表的SQL语句
* 访问MySQL数据库等代码省略
*/
return result;
}
//其他代码省略
}
public class DBManagerWithJsonLog extends DBManager {
/**
* 将对象o的访问operation以JSON格式记录在日志文件中
*/
***@Override
protected void log(Strin