设计模式解析及优缺点

创建型模式

抽象了对象实例化的过程

工厂方法模式(将工厂和产品进行抽象;单一产品)

抽象工厂(将工厂和产品进行抽象;产品族)

单例模式(一个类只有一个实例,并提供全局访问点)

与名字对应,这三种模式的重点在于如何创建对象。

工厂方法模式

结构:1抽象工厂、若干具体工厂;1抽象产品(说明是同一类产品)、若干具体产品

优点:

1. 封装了创建具体对象的工作

2. 使得客户代码针对接口编程,保持对变化的关闭

缺点:

虽然保证了工厂方法内的对修改关闭,但对于使用工厂方法的类,如果要添加另一种产品,仍然需要修改实例化的具体工厂类

抽象工厂模式

结构:1抽象工厂、若干具体工厂;多种抽象产品(产品簇)、若干具体产品

单例模式

结构:一个类只有一个实例,并提供全局访问点

要求:只有一个实例,自行实例化,自行提供访问

饿汉式(在声明时就立即创建实例)和懒汉式(需要调用时才创建实例);

结构型模式

如何组合类和对象以获得更大的结构;

装饰者模式(抽象组件、若干具体组件、抽象装饰器、若干具体装饰器)

适配器模式(抽象目标、等待适配的类、适配器)

桥模式(将抽象与实现分离开,聚合)

代理模式(添加一个中介)

桥模式

继承复用:

优点:可以容易的修改或扩展父类的实现

缺点:继承破坏封装,因为父类的实现细节全部暴露给子类,白盒复用;父类的实现如果发生改变,子类必会受影响;继承是静态的,无法在运行时发生改变。

组合优先:

优点:不破坏封装,成员对象的内部细节对新对象保密,黑盒复用;所需依赖少,只依赖接口;是动态的,可以把成员对象动态替换成另一个类型相同的对象。

缺点:对象数量会增加;使用委托会使系统更加复杂。

装饰者模式

优点:与继承更具灵活性,不改变原有对象的情况下扩展一个功能;通过使用不同装饰类以及这些类之间的排列组合,可以实现不同的效果;松耦合;符合开闭原则。

适配器模式

类适配器、对象适配器

代理模式

结构:抽象主题、代理主题、真实主题

行为型模式

描述算法和对象间职责的分配

观察者模式(抽象目标、具体目标、抽象观察者、具体观察者);

责任链模式(抽象处理者、具体处理者)

策略模式(上下文、抽象策略、具体策略)

观察者模式

本质:触发联动

责任链模式

优点:

降低耦合性;简化对象之间的相互连接;给对象职责的分配带来更多的灵活性;增加一个新的具体请求处理者无需修改原系统代码,只需要在客户端重新建链,

缺点:

不能保证请求一定会被处理;责任链较长时不便于代码调试,系统性能也受到一定影响;建链不当可能会导致循环调用,使系统陷入死循环。

策略模式

体现的设计原则:

开闭原则、组合优先、针对接口编程、封装可变

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边懵懵'.ㅅ'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值