设计模式:关于几个设计模式的思考

PS:个人思考,如果有错误或者有想探讨的地方欢迎指出,谢谢~

=================================================================

1、策略模式

概述:

定义算法族,分别封装,让它们可以相互替换。

实质:

抽象主体对象拥有的(可变化)行为封装成一个抽象行为类(接口),由该抽象行为类(接口)派生具体行为类;

主体对象拥有抽象行为类的实例,并且拥有可以设置该抽象行为类的方法,以使用不同的具体行为类替换对象原本的行为,

注意:

抽象主体对象需要拥有一个抽象行为对象,可在具体对象的构造函数中设置默认行为对象。

----------------------------------------------------------------------------------------------------------------

2、观察者模式

概述:

定义对象之间的一对多依赖,对象状况改变可以通知到所有的依赖者。

实质:

主题对象类拥有注册观察者,注销观察者,通知所有观察者三种方法,并维护一个观察者列表;

观察者类拥有一个注册监听方法,该方法设置观察的主题对象类,还拥有一个更新方法供主题对象类调用;

当主题对象更新,则通过观察者列表通知所有已注册的观察者,调用他们的更新方法。

注意:

观察者可注册多个主题对象。

----------------------------------------------------------------------------------------------------------------

3、装饰者模式

概述:

动态地将责任附加到对象上。

实质:

从抽象类中派生出装饰类和被装饰类,以一个被装饰类为主体,可使用多个装饰类装饰它;

装饰类的行为可在被装饰类的行为上增加新的责任(动作)。

注意:

装饰类中有一个抽象类对象,在装饰类的构造函数的参数中设置该抽象类对象为具体类对象(即被装饰对象)。 

----------------------------------------------------------------------------------------------------------------

4、工厂方法模式

概述:

定义了一个创建对象的接口,由子类决定实例化的类是哪个,让类把实例化推迟到子类。

实质:

创建一个抽象工厂类,一个抽象产品类;

抽象工厂类包括创造产品的方法以及操作产品的方法,由具体的子类创造具体的产品;

抽象产品类派生各种产品定义相关属性;

注意:

、、、

----------------------------------------------------------------------------------------------------------------

5、抽象工厂模式

概述:

提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。

实质:

抽象工厂包含多个创造抽象产品的方法;

多个抽象产品类共同组成抽象产品族,由其派生出多个具体抽象产品;

具体工厂根据需要生产特定产品。

注意:

、、、

----------------------------------------------------------------------------------------------------------------

6、单件模式

概述:

确保一个类只有一个实例,并提供一个全局访问点。

实质:

将构造函数变成私有,并提供一个公开的方法获得唯一的实例。

注意:

类需拥有一个实例对象并设置为null,如果使用方法访问该对象为null,则new一个唯一的实例对象。

----------------------------------------------------------------------------------------------------------------

7、命令模式

概述:

将请求封装为对象,以便使用不同的请求来参数化其他对象。

实质:

调用者对象拥有设置命令对象的方法和执行命令的方法;

命令接口拥有执行命令的方法;

调用者对象拥有命令对象,并且可以直接调用该命令对象以执行它。

注意:

所有具体命令需要派生自同一个命令接口,并实现该接口的方法。

----------------------------------------------------------------------------------------------------------------

8、适配器模式

概述:

将一个类的接口转换成客户期望的另一个接口。

实质:

一个派生自目标类的适配器,将真实类伪装为目标类,并实现目标类的需要实现的方法。

注意:

适配器中拥有一个真实类的对象,通过构造函数传入。

----------------------------------------------------------------------------------------------------------------

9、外观模式

概述:

提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

实质:

使用一个新的函数把其他的函数包装起来。

注意:

、、、

---------------------------------------------------------------------------------------------------------------

10、模版方法模式

概述:

在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中。

实质:

在派生类中实现父类的某些抽象步骤,继承其具体步骤。

注意:

、、、

----------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值