当前标签: 设计模式

结构型设计模式定义和应用场景

2014-10-29 15:08:09

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

阅读《模式 —— 工程化实现及扩展》、《设计模式之禅》、《研磨设计模式》三本书。以及参考网上的若干篇文章收集而成,

内容针对结构型的7种设计模式,本图并非设计模式教程,而是方便自己,以及对设计模式已经有所理解的读者开发备忘。

结构式模式 定义和应用场景 Craft6.cn 颜超敏.jpeg

============================================================= 结构型设计模式 定义和应用场景 Craft6.cn 颜超敏 ============================================================= ------------------------------------------------------------- 1 适配器模式 ------------------------------------------------------------- 1.1 定义 1.1.1 接口转换,使本来不兼容的接口可以协作 1.1.2 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 1.1.3 当一个范围内的对象相对稳定,而与之交互的范围内的对象不稳定,则可以在边界增加适配器和代理 1.2 三个角色 1.2.1 Target目标角色 1.2.1.1 期望接口 1.2.1.2 正在运行的接口或抽象类,不能被修改 1.2.2 Adaptee源角色 1.2.2.1 把谁转换为目标角色 1.2.3 Adapter适配器角色 1.2.3.1 适配器模式的核心角色,需要新建的 1.2.3.2 职责是把源角色转换为目标角色 1.3 两种方式 1.3.1 类适配器 1.3.1.1 基于继承 1.3.1.2 Target只能是接口 1.3.1.3 继承Adaptee源角色,可以覆盖某些方法 1.3.2 对象适配器 1.3.2.1 基于对象组合的思路 1.3.2.2 Target可以接口、抽象类或实体类 1.3.2.3 无法覆盖Adaptee的方法 1.4 优点 1.4.1 可以让任何没有关系的两个类协作运行 1.4.2 增加了类的透明性 1.4.3 提高了类的复用度 1.4.4 灵活性很好,想用就用,不需要可以删除,不影响原有代码 1.5 场景和实例 1.5.1 修改已投产中的接口 1.5.2 需要使用系统已有的类,但接口不符合要求,又不能修改该类 1.5.3 数据库访问 1.5.3.1 系统已有各类数据库的访问接口或类 1.5.3.2 客户端期望的接口和已有的不一样 1.5.3.3 针对每种数据库访问设计一个适配器,然后通过工厂返回不同的适配器实例 ------------------------------------------------------------- 2 桥接模式 ------------------------------------------------------------- 2.1 定义 2.1.1 GOF:将抽象和实现部分分离,使它们都可以独立变化 2.2 分解三步法 2.2.1 把依赖具体变成依赖抽象 2.2.2 如果同时存在多个正交的变化因素,就顺序展开,逐个抽象 2.2.3 每次将一个而且只有一个“变化因素”进行抽象,将依赖N个变化因素削减为N-1 2.3 优点 2.3.1 解决单纯多级继承的问题 2.3.2 将变化因素拆分和各个击破,确保对象不会快速膨胀 2.4 场景和实例 2.4.1 事务脚本分层方式的Service和Dao 2.4.1.1 Service负责业务逻辑 2.4.1.2 Dao负责数据持久化和查询 2.4.1.3 Controller只需要访问Service(桥头),而不会直接访问Dao 2.4.2 XML Scheme 2.4.2.1 将XML Scheme不支持的多重继承转化为多个平行的单继承结构 2.4.2.2 详见《桥梁模式在XML_Schema设计中的应用.pdf》 ------------------------------------------------------------- 3 组合模式 ------------------------------------------------------------- 3.1 定义 3.1.1 把具有“整体-部分”关系的对象组织成层次结构,客户程序在使用时可以用同一套方法处理单个个体或容器对象 3.2 角色 3.2.1 Component抽象构件角色 3.2.1.1 定义参加组合对象的共有方法和属性 3.2.2 Leaf叶子构件 3.2.2.1 叶子对象,其下再也没有其他的分支 3.2.3 Composite树枝构件 3.2.3.1 组合树枝节点和叶子节点形成一个树形结构 3.3 实现模式 3.3.1 透明模式 3.3.1.1 将组合使用的方法放到抽象构件中 3.3.2 安全模式 3.3.2.1 将组合使用的方法放到树枝构件中 3.4 优点 3.4.1 高层模块调用简单 3.4.2 节点自由增加 3.5 场景和实例 3.5.1 维护和展示部分-整体关系的场景,如树形菜单、文件和文件夹管理 3.5.2 从一个整体中能够独立出部分模块或功能的场景 ------------------------------------------------------------- 4 装饰模式 ------------------------------------------------------------- 4.1 定义 4.1.1 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 4.2 角色 4.2.1 Component抽象构件。被装饰类 4.2.2 ConcreteComponent具体构件 4.2.3 Decorator装饰角色 4.2.4 ConcreteDecoratorX具体装饰角色 4.3 要点 4.3.1 Component不要直接或间接使用Decorator 4.3.2 Decorator也仅仅认识Component。抽象依赖于抽象,知识最少。 4.4 优点 4.4.1 装饰类和被装饰类可以独立发展,而不会相互耦合 4.4.2 是继承关系的一个替代方案 4.4.3 装饰模式可以动态地扩展一个实现类的功能。 4.5 场景和实例 4.5.1 Sitemesh 4.5.2 HttpServletRequestWrapper 4.5.3 Subtopic ------------------------------------------------------------- 5 外观模式 ------------------------------------------------------------- 5.1 定义 5.1.1 为系统内部的多个类提供一个简化的接口,从而简化访问这些类的复杂性 5.2 优点 5.2.1 降低访问复杂系统的复杂度 5.2.2 为外部系统 和 系统内部进行解耦,避免直接调用系统内部的类 5.3 场景和实例 5.3.1 HibernateTemplate 5.3.1.1 是封装了SessionFactory、Session、Query等类的门面 5.3.2 WebService、WSDL、RESTFul API ------------------------------------------------------------- 6 享元模式 ------------------------------------------------------------- 6.1 定义 6.1.1 使用共享对象可有效地支持大量的细粒度的对象 6.2 角色 6.2.1 抽象享元角色 6.2.2 具体享元角色 6.2.3 不可共享的享元角色 6.2.4 享元工厂 6.3 优点 6.3.1 大大减少应用程序创建的对象,降低程序内存的占用 6.4 缺点 6.4.1 提高了系统的复杂度,需要分离出外部状态和内部状态 6.5 场景和实例 6.5.1 系统存在大量的相似对象 6.5.2 细粒度的对象都具备较接近的外部状态,而且内部状态和环境无关,对象无特定身份 6.5.3 需要缓冲池的场景 ------------------------------------------------------------- 7 代理模式 ------------------------------------------------------------- 7.1 定义 7.1.1 为目标对象提供一个代理,通过它管理对目标对象的访问 7.2 优点 7.2.1 屏蔽目标对象的复杂性 7.2.2 扩展目标对象功能时,可以无需修改代理 7.3 场景和实例 7.3.1 Spring 的 AOP 动态代理 7.3.1.1 通过配置文件决定在invoke方法调用那些拦截器


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


为您推荐这些文章,如果感兴趣,请继续阅读吧:

结构型设计模式定义和应用场景

结构型设计模式, 适配器模式, 桥接模式, 组合模式, 装饰模式, 外观模式, 享元模式, 代理模式

阅读《模式 —— 工程化实现及扩展》、《设计模式之禅》、《研磨设计模式》三本书。以及参考网上的若干篇文章收集而成,

内容针对结构型的7种设计模式,本图并非设计模式教程,而是方便自己,以及对设计模式已经有所理解的读者开发备忘。

颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件