结构型模式学习总结

        最近我正在自己学习设计模式,刚学完创建型、结构型和行为型模式,现在对我的学习到结构型模式的内容进行归纳总结。我不是一个拘泥于形式的人,不追求标准答案,只追求自己的答案,好了,废话不多说,下面开始总结。

        一、设计模式分类

        按照设计模式的目的,可分为:创建型、结构型、行为型三种。 创建型模式主要用于对象的创建,结构型模式处理类和对象的组合,行为型模式描述类或对象的职责。

        按照设计模式的范围,可分为适用于类和适用于对象两种。类模式处理类和子类间的关系,对象模式处理对象间的关系。

        二、结构型模式

        1、适配器模式

         什么是适配器,通俗一点说就是一种起中间连接作用的配件。同理,适配器模式主要作用就是要将两个接口不同的模块连接在一起,使其中一个模块可以使用另一个模块的功能。

        举个例子,比如说我们想要调试设备,需要这样一根线,它一端连接我们笔记本电脑的USB接口,另一端连接我们所要调试设备的COM口。这根线就是适配器。在代码中的情况就是,目标模块需要调用被适配者模块的某个接口(比如void interface(char))来实现目标模块自己的某个接口(比如void interface(int)),可问题是他们的接口并不相同,适配器(类)通过继承目标模块的接口(后面称为目标接口),并通过调用被适配者模块提供的接口(我称它为服务接口)来重写目标接口的实现,这样一来,当实例为适配器时,调用目标模块的接口,就实际调用了适配器的接口,同时也就调用了被适配者模块提供的接口。

        实现适配器的方法有两种,一种是通过类继承的方法,令适配器(类)继承目标模块的接口和被适配者模块的实现,优点是访问被适配者的内部起来成员比较方便,可以直接调用,不必创建更多的对象,缺点是不够灵活;另一种是通过令适配器(类)继承目标模块的接口同时内部成员包含被适配者的对象,优点是灵活,易扩展,修改实现,缺点就是更复杂,需要通过改变成员中被适配者的对象来改变实现。

        2、桥接模式

        我们知道,桥梁可以将完全相隔的两个地方给连通起来,而桥接模式则是一种将接口与实现分离,又通过逻辑上的桥来建立接口与实现之间的联系,以实现接口和实现都能独立变化的松散耦合结构。

        举个例子,市场部有一个员工专门负责了解客户的需求,再把这个需求分配给研发部门的一个员工完成。这时,市场部的员工就是接口,研发部的员工就是实现。接口与实现之间通过逻辑上的“桥”来联系,如市场部员工向研发部员工提出需求。同时我们的市场部员工和研发部员工又都能独立的变化,比如我可以用市场部的A员工了解客户需求,用研发部员工B来处理这个需求。如果有一天发现研发部的员工B不能很好的完成需求,那么我们可以换做用研发部员工C来完成,因为员工A和员工B是松散关系,并不是必须要员工A和员工B一起才能完成任务,员工A和员工C配合也是可以的。

        再强调一下,桥接模式是一种将接口与实现分离,又通过逻辑上的桥来建立接口与实现之间的联系,以实现接口和实现都能独立变化的松散耦合结构。

        3、组合模式

        组合就是多个对象“揉”到一起而“生成”的一个组合对象。组合模式还有一个更重要的特征,一个被组合而成的对象既可以是组成它的多个对象的容器,又可以是另一个组合而成对象的其中一个组成单元。即可以忽略容器与组成单元的区别。

        举个例子,我们都玩过拼图游戏,拼图A和拼图B拼成了拼图C,而我们认为拼图C和拼图A、B并没有本质上的区别,都是完整拼图的一部分,都可以与其他合适的拼图拼成更大的一块。

        所以组合是这样一种结构,既可以是多个部分组合而成整体,又可以是可以组合成某个整体的部分。

 

        未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值