`

结构类模式大PK(总结)

阅读更多

结构类模式包括适配器模式桥梁模式组合模式装饰模式门面模式享元模式代理模式,它们都是通过组合类或对象产生更大结构以适应更高层次的逻辑需求。

 

一、代理模式VS装饰模式

代理模式把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,它不对被代理类的功能做任何处理,保证原汁原味的调用。代理模式使用到极致开发就是AOP,这是采用Spring架构开发必然要使用到的技术,它就是使用了代理和反射技术。

装饰模式是在保证接口不变的情况下加强类的功能,它保证的是被装饰的对象功能比原始对象丰富(当然也可以减弱),但不做准入条件判断和准入参数过滤,如是否可以执行类的功能,过滤输入参数是否合规等,这不是装饰模式关心的。

 

二、装饰模式VS适配器模式

1、意图不同

装饰模式的意图是加强对象的功能,它不改变类的行为和属性,只是增加/减少功能;而适配器模式关注的则是转化,它的主要意图是两个不同对象之间的转化,关注转换。

2、施与对象不同

装饰模式装饰的对象必须是自己的同宗,也就是相同的接口或父类,只要在具有相同的属性和行为的情况下,才能比较行为是增加还是减弱;适配器模式则必须是两个不同的对象,因为它着重于转换,只有两个不同的对象才有转换的必要,如果是相同的对象还转换什么!

3、扩展性不同

装饰模式很容易扩展,可有可无。而适配器模式就不同了,它是两个不同对象之间架起的一座沟通的桥梁,建立容易,去掉就比较困难了,需要从系统整体考虑是否能够撤销。

 

2
0
分享到:
评论

相关推荐

    大图挖掘中一种基于云计算的改进SpiderMine算法.pdf

    最后,算法采用模式键(Pattern Key, PK)函数来保存模式,确保所有模式能够被成功恢复和融合。 最小切割算法: 最小切割算法是图论中一种基本算法,用于将图分成两部分,并使得两部分间的连接边权值之和最小。在C-...

    Head First_设计模式(中文版)pdf

    设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验和方法,可以提高代码的可重用性、可维护性和可扩展性。这本书以独特的视觉风格和易于理解的方式阐述了23种经典的GoF设计模式。 1. **...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    软件设计1

    首先,数据库设计主要关注两个方面:结构特性设计(数据库模式或数据结构)和行为特性设计(应用程序和事务处理)。UML作为一种强大的建模工具,能够将这两者结合起来,使得系统设计更为统一。数据模型是构建数据库...

    使用UML的数据库分析与设计PPT学习教案.pptx

    b) 概念结构设计:使用ER方法(实体-联系)创建ER图,定义系统的信息组织模式,即概念结构。例如,教师-学生-课程的E-R图展示了三者之间的关系。 c) 逻辑结构设计:将概念结构转换为特定数据库管理系统可接受的...

    自组织特征映射神经网络在汛期分期中的应用.pdf

    2. **随机选取样本**:从q个学习模式中随机选择一个样本Pk,并对样本和权值进行归一化处理。 3. **计算欧氏距离**:计算输入样本Pk与每个竞争层神经元的权值向量Wj之间的欧氏距离dj。 4. **找到最近邻**:找出与...

    python编程基础PPT

    - **类的定义**:Python 2中的类分为旧式类和新式类,Python 3统一为新式类。 - **缩进处理**:Python 2允许tab和空格混用,Python 3则不允许。 - **流行版本**:目前最流行的版本是Python 2.7.x和Python 3.7.x。...

    使用Django来开发一个简单的博客网站,如何实现?,需要的拿走

    这将在当前目录下创建一个名为`mysite`的新目录,其中包含你的项目结构。 #### 三、创建应用 每个Django项目通常由多个应用组成。对于我们的博客项目,我们需要创建一个名为`blog`的应用。在项目目录下执行以下...

    基于python的Django框架学生信息管理系统.zip

    例如,`/students/`可能对应`student_list`视图,`/students/<int:pk>/`对应`student_detail`视图,其中`pk`是学生的唯一标识。 5. **forms.py**: 可能包含了表单类,如`StudentForm`,用于用户输入学生信息的验证...

    1西点执行力零.pptx

    万科集团的王石也在学习中借鉴了西点管理模式,认为现代企业管理应借鉴军队的严谨和执行力。 【执行的标准与原则】 执行的标准在于结果管理,执行原则要求明确目标、制定行动计划,并确保最终达成预设的结果。执行...

    进气增压控制系统PPT学习教案.pptx

    首先,增压度φ是指增压后发动机功率与增压前功率的比值,而增压比则是增压后空气压力pk与增压前空气压力p0的比例。根据增压比的不同,增压发动机可分为低增压、中增压和高增压三类。增压技术的主要优点包括:减少...

    Django REST framework内置路由用法

    总结来说,DRF的内置路由机制极大地简化了API的构建过程,它自动化了许多常见的任务,如URL模式生成、HTTP方法映射以及视图集的管理。通过合理地使用`DefaultRouter`,开发者可以更专注于业务逻辑,而不用过多关注...

    现代仓储物流管理信息系统分析与设计_曹彬.pdf

    文档中提到的EPC(实体-属性-类)模型用于构建数据模型,而实体之间的关系则通过主键(PK)和外键(FK)来定义。关系数据库中的主键用于唯一标识表中的记录,而外键则用于将一个表中的数据与其他表中的数据相联系。...

    第19章 神经网络模型.pdf

    - **应用领域**:ANN被广泛应用于模式识别、图像处理、智能控制、组合优化、金融预测与管理、通信、机器人、专家系统等多个领域。 #### 2. 人工神经元模型 - **基本构成**: - **连接**:代表神经元之间的连接,其...

    JPA注解帮助文档

    - **作用**:指定实体类可以映射到多个表上,用于复杂的数据结构。 - **属性**: - `name`:次要表的名称。 - `schema`:次要表所在的模式。 - `catalog`:次要表所在的目录。 - **示例**: ```java @Entity @...

    爱普生esc/p指令手册

    手册结构概述 - **关于本手册**:介绍了手册的目的、目标读者以及如何使用本手册。 - **编写规范**:包括手册中使用的图标、命令名称和参数约定等。 - **信息组织方式**:说明了命令是如何分类和组织的。 - **非...

    django_crud_api

    总结起来,"django_crud_api"是一个使用Python的Django框架创建的RESTful API项目,它实现了对数据库对象的基本CRUD操作,适用于数据驱动的应用场景。项目涉及了Django的模型、视图、URL配置、认证和授权等多个核心...

    DjangoProject:博客应用程序

    总结来说,DjangoProject中的博客应用程序展示了如何利用Django框架构建一个完整的Web应用。通过理解模型、视图、URL路由和模板的概念,你可以轻松地扩展这个应用,添加更多功能,比如评论系统、用户登录和权限管理...

    Blog-App-in-Django:借助django框架制作的简单的甜蜜博客应用程序

    Django的ORM允许开发者用Python类来描述数据库结构。例如,可能有一个`Post`类,包含`title`、`content`、`pub_date`等字段,这些字段对应数据库中的列。 ```python from django.db import models class Post...

Global site tag (gtag.js) - Google Analytics