随笔分类 - 设计模式
摘要:享元模式是运用共享技术有效地支持大量细粒度的对象。一个典型的应用场景就是用来实现各种池了,比如String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。享元模式主要为了解决大量类似对象占用大量内存的现象,因为内存是珍贵的资源,所以我们讲这些相似对象进行归类
阅读全文
摘要:命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 一、类图 经典的命令模式包括如下4个角色: Command:定义命令的统一接口 ConcreteCommand:Com
阅读全文
摘要:组合模式是将对象组合成树形结构以表示 “部分-整体” 的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 一、类图 组合模式包含了如下几个角色: Component:是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 L
阅读全文
摘要:迭代器模式提供一种方法顺序的访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 一、类图 迭代器模式主要包含以下角色。 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭
阅读全文
摘要:桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。这种模式涉及一个接口,作为一个桥梁,使得具体类的功能独立于接口实现类。两种类型的类可以在结构上改变而不彼此影响。 一、类图 桥接模式包含如下几个角色: Abstraction:抽象类角色。定义抽象类的接口并维护指向Implementor类的对
阅读全文
摘要:解释器模式提供了一种评估计算语言语法或表达式的方法。 这种类型的模式属于行为模式。 这种设计模式涉及实现一个表达式接口,它告诉解释一个指定的上下文。 此模式用于SQL解析,符号处理引擎等。 一、类图 解释器模式包含以下主要角色。 抽象表达式(Abstract Expression)角色:定义解释器的
阅读全文
摘要:中介者模式用一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显式地相互引用,从而使其耦合性松散,并且可以独立地改变他们之间的交互。 一、类图 中介者模式主要包含如下几个角色: Mediator: 抽象中介者。定义了同事对象到中介者对象之间的接口。 ConcreteMediator: 具体
阅读全文
摘要:备忘录模式用来恢复一个对象的状态到以前的状态。 通俗的说,就是把一个类的属性临时的保存在另一个地方,并提供一个接口可以还原,比较适用的场景是系统升级,代码回滚。 一、类图 备忘录模式包含以下几个角色: Originator(原发器):它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以
阅读全文
摘要:状态模式也称状态机(State Machine),简单用一句话解释就是:用对象定义具体状态,调用时指向具体状态对象的方法。 一、类图 状态模式包含以下主要角色。 环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。 抽象
阅读全文
摘要:访问者模式提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信
阅读全文
摘要:在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。简单理解就是一组算法,可以互换,再简单点策略就是封装算法。 一、类图 策略模式包含如下三个角色: 环境(Context)角色:持有一个Strategy的引用。 抽象策略(Strategy)角色:这是一个抽象角色,通
阅读全文
摘要:外观模式通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。外观模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 一、类图 外观模式包含如下几个角色: 外观(Facade)角色 :为多个子系统对外提供
阅读全文
摘要:一、定义 迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 二、结构 (1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法: next():获取下一个元素的方法 hasNext():判断是否遍历结束的方法 remove():移
阅读全文
摘要:适配器模式是将一个类的接口转换成客户希望的另一个接口,从而让那些接口不兼容的类可以一起工作。 一、类图结构 适配器模式包含以下三个角色: Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。在类适配器中,由于C#语言不支持多重继承,所以它只能是接口。 A
阅读全文
摘要:一、定义 抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 二、结构 抽象工厂模式的主要角色如下: 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。 具体工厂(Con
阅读全文
摘要:一、定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使得一个类的实例化延迟到了其子类。 二、类图 工厂方法模式包含以下几个角色: 抽象产品角色(Product):具体产品对象的共同父类或共同拥有的接口。 具体产品角色(ConcreateProduct):实现抽象产品接口的具体
阅读全文
摘要:设计模式是在软件开发中,经过验证的,用于解决在特定环境下、重复出现的或者特定问题的解决方案。而这些都是前辈们经过大量的实践总结出来的宝贵经验,学习和领会其中的设计思想,能让我们在面对相同问题时可以直接使用现有的解决方案,从而避免重复创造轮子。典型的设计模式可以分为以下三大类: 创建型模式:抽象了对象
阅读全文
摘要:责任链模式是一种对象的行为模式。在该模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 一、类图 责任链模
阅读全文
摘要:一、定义 装饰器模式又叫做包装模式(Wrapper)。装饰器模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 在以下情况下应该使用装饰器模式: 1.需要扩展一个类的功能,或给一个类增加附加责任 2.需要动态的给一个对象增加功能,这些功能可以再动态的撤销 3.需要增加由一些基本功能的
阅读全文
摘要:一、定义 代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用。在一些情况下,一个客户端不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。 二、类图 代理模式中的角色: ●抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对
阅读全文