随笔分类 - 设计模式
设计模式学习笔记
摘要:状态模式可以看做是在运行时改变对象行为的一种方式。状态模式允许对象在其内部状态变化时改变其行为,此时感觉就像对象本身已经改变了一样。 参与者: State接口:State基类,定义不同状态共同需要执行的接口。 ConcreteSate对象:State基类的子类,不同状态的可以在子类接口中实现不同的操
阅读全文
摘要:此模式通过一个模板方法来定义程序的框架或算法,通常模板方法定义在基类中,即原始的模板,然后子类就可以根据不同的需要实现或重写模板方法中的某些算法步骤或者框架的某部分,最后达到使用相同模板实现不同功能的效果。 核心思想: 使用一个模板方法定义好总的算法框架。 子类中根据需要重新定义某些操作,但是不能修
阅读全文
摘要:命令模式,正如模式的名字一样,该模式中的不同操作都可以当做不同的命令来执行,可以使用队列来执行一系列的命令,也可以单独执行某个命令。该模式重点是将不同的操作封装为不同的命令对象,将操作的调用者与执行者进行解耦。 命令模式中的Command对象(即每一个命令,或者说命令对象)用于封装在完成某项操作或触
阅读全文
摘要:观察者模式中的主题对象一般存在着一个其他服务依赖的核心服务,并且维护着其他依赖此核心服务的对象列表(即观察者或监视者列表),当主题对象发生变化时,观察者应该改变自己的状态或者进行某些操作 观察者模式中的三个角色: 主题:即观察者观察的对象,一般是需要有注册和注销方法,用来添加观察者和删除观察者。 观
阅读全文
摘要:代理通常就是一个介于寻求方和提供方之间的中介系统。其核心思想就是客户端(寻求方)没有直接和提供方(真实对象)打交道,而是通过代理对象来完成提供方提供的资源或操作。 代理其实就是封装实际服务对象的包装器或代理人。代理可以为其包装的对象提供附加功能,而无需改变此对象的代码。代理模式的主要目的是为其他对象
阅读全文
摘要:facade模式,即门面模式,也称外观模式,这个模式的核心思想是使用facade对象为外部客户端提供一个统一的访问一组子系统的接口,即客户端不会直接与各个子系统交互,而是通过facade对象与各个子系统进行通信并使用子系统的相应功能。 可以通过下面这个图来理解facade模式: 子系统:各个子系统原
阅读全文
摘要:工厂模式:“工厂”即表示一个负责创建其他类型的对象的类,通常情况下,一个工厂的对象会有一个或多个方法与之关联,这些方法用于创建不同类型的对象,工厂对象会根据客户端给方法传递的不同的参数或者客户端调用不同的方法返回不同的对象。 优点:对象的创建是可以根据需要单独创建的,但是使用工厂模式来创建对象有以下
阅读全文
摘要:单例设计模式:单例模式提供这样一个机制,确保类有且只有一个特定类型的对象,并提供全局访问点。一般单例模式使用时,需要注意以下几点: 确保该类有且只有一个对象被创建。 需要为该对象提供一个全局访问点,以便程序可以全局访问该对象(必须保证这个访问点返回的都是同一个对象)。 需要注意控制共享资源的访问。
阅读全文