设计模式(上)
引言
设计模式是一种良好的编程习惯,能够更高效的组织代码以及方便扩展。遵循良好设计模式编写的代码能够让人更直观的明白项目结构或功能意图。以下介绍一些我日常学习中设计到的设计模式。
观察者模式
简单来说观察者模式是发布-订阅模式,首先需要抽象出一个公共接口,所有的消费者实现这一个接口。生产者维护一个该接口的List,以便知道需要通知哪些消费者。消费者如果想要订阅某一个数据源,则只需要将自己添加到该数据源对应的生产者的List中即可。以下是一个简单的观察者模型,如图所示

装饰器模式
装饰器模式的核心也是将需要修饰的方法变成一个抽象类, 增强这个方法的类实现抽象类中的抽象方法,并将这个抽象类设置为自己的成员变量。创建增强类的时候只需要把待增强的对象设置为自己的成员变量。实现增强方法的时候先调用super.method(),返回待增强对象的方法结果,再基于这个结果实现增强逻辑。装饰器模式是一个天然的链式处理模式,对于链式场景的方法使用装饰器模式可以拥有很好的扩展性以及灵活性。需要怎么增强无非就是选择不同的增强类去包装待增强的方法。

工厂模式
在工厂模式中,创建对象的方式被单独封装成一个方法。调用方处理对象的创建,传入需要的类型,从工厂方法中获取对应的对象。对象的创建对于调用方来说是一个黑盒操作,这样的一个优点是可以同意的管理对象的创建,而不用在代码中的不同地方去创建对象。
命令模式
命令模式把对同一个功能的调用和执行进行解耦,同样是面向接口编程,一下是命令模式的一个简单demo。

适配器模式
适配器模式是一种转换模式,主要功能是将接口A通过适配器对象,将其转换成接口C的功能。主要分为3部分,目标接口、适配起对象以及源接口。适配器对象通过实现目标接口,重写目标接口的方法,将源接口对象注入到适配器对象的成员变量,在重写的方法中利用源接口对象的功能复现目标接口的功能。

模板模式
模板模式像一个清单列表,不同的步骤在不同环境下有不同的实现。但是可以有一个方法来按照一定的逻辑汇总所有的数据,这个方法不允许被重写。

状态机模式
针对一个事件在不同状态下呈现的行为不同,可以将这些行为抽象成一个状态接口,接口里提供不同状态下各种抽象行为的方法。不同的状态实现状态接口,重写行为方法,在各自状态下所呈现的效果。通过状态的扭转,可以让一个事件能够很自然的进行行为上的过渡。此外将不同状态的行为封装成一个对象,可以更好地进行解耦操作。最后还是想说,状态机模式还是一种面向接口编程的设计模式。


浙公网安备 33010602011771号