做网站很赚钱,wordpress 底部插件,宣传网,wordpress去log7.1 设计模式概述
设计经验在实践者之间日益广泛地利用#xff0c;描述这些共同问题和解决这些问题的方案就形成了所谓的模式。
7.1.1 设计模式的历史
建筑师Christopher Alexander首先提出了模式概念#xff0c;他将模式分为了三个部分#xff1a;
特定的情景#xff…7.1 设计模式概述
设计经验在实践者之间日益广泛地利用描述这些共同问题和解决这些问题的方案就形成了所谓的模式。
7.1.1 设计模式的历史
建筑师Christopher Alexander首先提出了模式概念他将模式分为了三个部分
特定的情景Context模式在何种情况下发生作用动机System of force问题或预期的目标解决方案Solution平衡各动机或解决所阐述问题的一个构造或配置。
模式是表示特定的场景、动机、解决方案三个方面关系的一个规则每个模式描述了一个在特定情景下不断重复发生的问题以及该问题解决方案的核心所在。 模式既是一个事物又是一个过程不仅描述该事物本身而且提出了通过怎样的过程产生该事物。 设计模式的核心是问题描述和解决方案问题描述说明模式的最佳使用场合及它将如何解决问题解决方案是用一组类和对象及其结构动动态协来描述的。
20世纪80年代中期由Ward Cunningham和Kent Beck将其思想引入到软件领域。1995年E.GammaR.HelmR.Johnson和J.Vlissides 4人合著了Design Patterns: Elements of Object-Roiented Software(设计模式可复用面向对象软件的基础)这一经典书籍这四位大师级人物也被称为Gang Of FourGoF。
7.1.2 为什么要使用设计模式
设计模式的应用对软件开发有重大的作用
简化并加快设计方面开发人员之间的通信降低风险有助于转向面向对象技术
而成熟的软件设计模式
巧妙设计模式是在大量实践经验的基础上提炼出来的通用设计模式不依赖特定的系统类型、程序设计语言、应用领域得到证明设计模式在实际系统和面向对象系统中已得到了广泛应用简单设计模式提炼了精简的类设计思想可重用设计模式的建档方式使它们非常易于使用面向对象设计模式是用最基本的面向对象机制构造的并特定强调区分接口和实现、降低各部分之间的依赖、隔离硬件和软件等面向对象设计的特性。
7.1.3 设计模式的组成元素
模式名问题或意图情景动机解决方案示例结果情景基本原理相关模式已知应用
7.1.4 设计模式的分类
设计模式主要用于得到简洁灵活的系统设计GoF的书中共有23个设计模式这个模式可以按两个准则来分类 一是按设计模式的目的划分创建型、结构型和行为型三种模式 二是按设计模式的范围划分根据设计模式作用于类还是作用于对象类设计模式和对象设计模式。
创建型模式对对象实例化过程的抽象它通过采用抽象类所定义的接口封装了系统中对象如何创建、组合等信息结构型模式主要用于如何组合已有的类和对象以获取更大的结构一般借鉴封装、代理、集成等概念将一个或多个类或对象进行组合、封装以提供统一的外部视图或新的功能。行为型模式用于对象之间的职责及其提供的服务的分配描述对象或类的模式、它们之间的通信模式、及对象间协作完成其单一对象无法单独完成的任务。
7.2 设计模式实例
7.2.1 创建型模式5种
1、Abstract Factory抽象工厂
为创建一系列相关或者相互依赖的对象提供了一个接口。根据给定的相关抽象类抽象工程模式提供了一个相匹配的具体子类集创建这些抽象类的实例的方法。
2、Builder构建器
构建器模式将复杂对象的构建与其表示相分离这样相同的构造过程可以创建不同的对象。通过指定对象的类型和内容构建器模式允许客户端对象构建一个复杂对象。客户端可以不受该对象构造的细节的影响。
3、Factory Method工厂方法
工厂方法模式定义了创建对象的接口它允许子类决定实例化哪个类。它允许将实例化的工作交给其他的子类。
4、Prototype原型
原型模式允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。原型模式使用动态创建对象更加简单只要将对象类定义成能够复制自身就可以实现。
5、Singleton单例
单例模式确保一个类只有一个实例并且提供了对该类的全局访问入口它可以确保使用这个类的实例的所有的对象使用相同的实例。
7.2.2 结构型模式7种
1、Adapter适配器
适配器模式可以充当两个类之间的媒介它可以转换一个类的接口被另外一个类使用使得具有不兼容接口的类能够协同使用。
2、Bridge桥接
桥接模式可以将一个复杂的组件分成两个独立的但又相关的继承层次结构功能性的抽象和内部实现。
3、Composite组合
组合模式允许创建树型层次结构来改变复杂性允许结构中的每一个元素操作同一个接口。
4、Decorator装饰器
装饰器模式可以在不修改对象外观和功能的情况下添加或者删除对象功能。
5、Facade外观
外观模式为子系统中的一组接口提供了一个统一的接口。这个统一的接口允许对象使用该接口与子系统进行通信从而实现对子系统的访问。
6、Flyweight享元
轻量模式可以通过共享对象减少系统中低等级的、详细的对象数目。
7、Proxy代理
代理模式为控制对初始对象的访问提供了一个代理或者占位符对象。它的实现可以有多个类型如远程代理和虚拟代理等。
7.2.3 行为模式11种
1、Chain of Responsibility责任链
责任链模式可以在系统中建立一个链可以让传递的消息在首先接收到它的级别处理或者定位到可以处理它的对象。
2、Command命令
命令模式在对象中封装了请求这样可以保存命令将该命令传递给方法以及像任何其他对象一样返回该命令。
3、Interpreter解释器
解释器模式可以解释定义其它语法表示的语言还提供了用于表示解释语言中的语句解释器。
4、Iterator迭代器
迭代器模式为集中的有序访问提供了一致的方法而该集合是独立于基础集合并与之相分离的。
5、Mediator中介
中介模式通过引入一个能够管理对象间消息分布的对象简化了系统中对象间的通信。该模式可以减少对象之间的相互引用从而提高了对象间的松耦合度。
6、Memento备忘录
备忘录模式可以保持对象状态的“快照”这样对象可以在不向外界公开其内容的情况下返回到它的最初状态。
7、Observer观察者
观察者模式为组件向相关接收方广播消息提供了灵活的方法。该模式定义了对象间一到多的依赖关系这样当对象改变状态时将自动通知并更新它所有的依赖对象。
8、State状态
状态模式允许对象在内部状态变化时变更其行为并修改其类。
9、Strategy策略
策略模式定义了一组能够用来表示可能行为集合的类这些行为可以在应用程序中使用来修改应用程序功能。
10、Template Method模板方法
模板方法模式提供了在不重写方法的前提下允许子类重载部分方法的方法。
11、Vistor访问者
访问者模式提供了一种方便的、可维护的方法来表示在对象结构元素上要进行的操作。该模式允许在不改变操作元素的类的前提下定义一个新的操作。