设计模式总结(结构型)

结构型模式描述如何将类和对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构,从程序的结构上解决模块之间的耦合问题。

结构型模式可以分为类结构型模型和对象结构型模型。

两者之间的区别是:类描述如何通过继承提供更有用的接口,而对象描述的是通过适用对象的组合或将对象包含在别的对象里面以获得更有用的结构。

 

 

适配器模式

例子:姚明需要一个翻译来翻译教练与队友的语言

就是将两个只有接口不相符的对象利用适配器连接起来(可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定他们)理解:翻译者在重写的方法内调用被翻译者的方法来告诉他该执行什么。

适用性:想要使用一个已经存在的类的时候,它的接口不符合你的要求 

 

桥接模式

例子:不同品牌的手机基本应用软件不兼容

因为这个模式的类图中两个抽象类之间有一个聚合线,就像是两者之间的一座桥一样,因而得名桥接模式

桥接模式是通过合成/聚合复用原则将抽象部分与他的显示部分分离,使他们都可以独立的变化,从而降低了他们之间的耦合度。所以两者还用到了开放—封闭原则

装饰模式

例子:穿衣服

动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

代理模式

定义:给某个对象提供一个代理对象,并由代理对象控股之原对象的引用。(中介)

例子:我想卖房,然后把房子托付给中介

适用:一个用户不想或者使不能直接引用一个委托对象,而代理对象可以在客户类和委托对象之间起到中介的作用,特征代理类和委托类实现相同的接口。

享元模式

在享元模式中可以共享的相同内容称为 内部状态(Intrinsic State),而那些需要外部环境来设置的不能共享的内容称为 外部状态(Extrinsic State),其中外部状态和内部状态是相互独立的,外部状态的变化不会引起内部状态的变化。由于区分了内部状态和外部状态,因此可以通过设置不同的外部状态使得相同的对象可以具有一些不同的特征,而相同的内部状态是可以共享的。也就是说,享元模式的本质是分离与共享 : 分离变与不变,并且共享不变。把一个对象的状态分成内部状态和外部状态,内部状态即是不变的,外部状态是变化的;然后通过共享不变的部分,达到减少对象数量并节约内存的目的。

 外观模式

例子:炒股。

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口似的这一子系统更加容易使用(Facade它需要了解所有的子系统的方法或属性,进行组合,以备外界调用)提供接口降低耦合,减少类与类之间的依赖,利于维护。

目的:不是给于系统添加新的功能接口,而是为了让外部减少于子系统内多个模块的交互,松散耦合,从而让外部能够简单的使用子系统。

本质:封装交互,简化调用

组合模式

例子:公司、分公司、办事处、部门

将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

1、组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推。

2、所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象(将叶子节点与数枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值