设计模式
文章平均质量分 89
OODeveloper
2015-6~2017-3参与Android项目开发,开发工具Android studio;
2017-3~2019-5参与C++项目开发,开发平台QT;
2019-5~2020-7 参与iOS项目开发,开发语言Object-c,开发环境Xcode。
展开
-
java设计模式——抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式产生的动机: 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。 产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产原创 2016-07-27 15:09:59 · 619 阅读 · 0 评论 -
java设计模式——策略模式(Strategy Pattern)
概述: 在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。 策略模式的主要目的是将算法的定义与使用分开,也就是将算法的行为和环境分开,将算法的定义放在原创 2016-08-31 15:15:53 · 576 阅读 · 0 评论 -
java设计模式——命令模式(Command Pattern)
概述: 在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,此时,我们特别希望能够以一种松耦合的方式来设计软件,使得请求发送者与请求接收者能够消除彼此之间的耦合,让对象之间的调用关系更加灵活,可以灵活地指定请求接收者以及被请求的操作。命令模式为此类问题提供了一个较为完美的解决方案。 命令原创 2016-08-22 16:53:35 · 407 阅读 · 1 评论 -
java设计模式——模板方法模式(Template Method Pattern)
概述: 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。模板方法模式提供了一个模板方法来定义算法框架,而某些具体步骤的实现可以在其子原创 2016-09-01 15:52:55 · 379 阅读 · 0 评论 -
java设计模式——装饰模式(Decorator Pattern)
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。 装饰模式可以在不需要创造更多子类的情况下,将对象的功能加以扩展。定义:装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说, 装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wr原创 2016-08-11 17:11:50 · 471 阅读 · 1 评论 -
java设计模式——外观模式(Facade Pattern)
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。定义:外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象原创 2016-08-12 17:38:43 · 385 阅读 · 0 评论 -
java设计模式——中介者模式(Mediator Pattern)
概述: 如果在一个系统中对象之间的联系呈现为网状结构,如图1-1所示。对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象, 也会被别的对象所影响,这些对象称为同事对象,它们之间通过彼此的相互作用实现系统的行为。在网状结构中,几乎每个对象都需要与其他对象发生相互作用, 而这种相互作用表现为一个对象与另外一个对象的直接耦合,这将导致一个过度耦合的系统。原创 2016-08-23 17:35:11 · 502 阅读 · 0 评论 -
java设计模式——工厂方法模式(Factory Method Pattern)
简单工厂模式虽然简单,但也受到很大限制,扩展性太差,当系统中需要引入新产品时, 由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍第二种工厂模式——工厂方法模式。定义:工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Vi原创 2016-07-26 14:04:45 · 547 阅读 · 0 评论 -
java设计模式——访问者模式(Visitor Pattern)
概述: 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。在使用访问者模式时,被访问元素通常不是单独存在的,它们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对象结构实现对其中存储的元素的逐个操作。定义: 提供一个作用于某对象结原创 2016-11-08 15:19:28 · 693 阅读 · 1 评论 -
java设计模式——解释器模式(Interpreter Pattern)
概述: 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它用于描述如何使用面向对象语言构成一个简单的语言解释器。在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应为该语言中的句子。此时,可以使用解释器模式来设计这种新的语言。对解释器模式的学习能够加深我们对面向对象思想的理解,并且掌握编原创 2016-12-20 16:31:33 · 341 阅读 · 0 评论 -
java设计模式——迭代器模式(Iterator Pattern)
概述: 在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更符合“单一职责原则”的要求。定义:提原创 2016-12-20 16:28:21 · 425 阅读 · 0 评论 -
java设计模式——组合模式(Composite Pattern)
对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下我们希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂。原创 2016-08-09 17:38:38 · 493 阅读 · 0 评论 -
java设计模式——状态模式(State Pattern)
概述: 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,对于客户端而言,无须关心对象状态的转换以及对象所处的当前状态,无论对于何种状态的对象,客户端都可以一致处理原创 2016-08-30 16:57:57 · 695 阅读 · 0 评论 -
java设计模式——适配器模式(Adapter Pattern)
通常情况下,客户端可以通过目标类的接口访问它所提供的服务。有时候,现有的类可以满足客户类功能需要,但是它所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。定义:适配器原创 2016-07-30 16:53:52 · 333 阅读 · 0 评论 -
java设计模式——享元模式(Flyweight Pattern)
概述: 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。 享元模式正是为解决这一类问题而诞生的。享元模式通过共享技术实现相同或相似对象的重用。在享元模式中可以共享的相同内容称为内部状态(IntrinsicState),而那些需要外部环境来设置的不能共享的内容称为外部状原创 2016-08-15 17:51:50 · 397 阅读 · 0 评论 -
java设计模式——代理模式(Proxy Pattern)
概述: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额外服务。通过引入一个新的对象来实现对真实对象的操作或者将新的对 象作为真实对象的一个替身,这种实现机制即 为代理模式。代理模式又可以分为多种类型原创 2016-08-16 16:29:45 · 406 阅读 · 0 评论 -
java设计模式——责任链模式(Chain of Responsibility Pattern)
概述: 在软件系统中通常处理用户请求的对象不止一个,比如用户登陆请求,大多数情况都是分为普通用户和VIP用户,当用户登陆的时候,肯定会处理这个请求,先查看是否存在该用户,然后是普通还是VIP用户,最后会有不同的处理结果。责任链可以是一条直线、一个环或者一个树形结构,最常见的责任链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,责任链模式可以将请求的处理者组织原创 2016-08-17 16:24:16 · 476 阅读 · 0 评论 -
java设计模式——简单工厂模式(Simple Factory Pattern)
定义:简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工 厂模 式中,可以根据参数的不同返回不同类的实例。结构:Factory:工厂角色,它是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用, 创建所需的产品对象;在原创 2016-07-25 16:18:08 · 659 阅读 · 0 评论 -
java设计模式——桥接模式(Bridge Pattern)
设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案: 第一种设计方案是为每一种形状都提供一套各种颜色的版本。 第二种设计方案是根据实际需要对形状和颜色进行组合。 对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更原创 2016-08-06 15:04:17 · 463 阅读 · 0 评论 -
java设计模式——建造者模式(Builder Pattern)
在软件开发中,存在大量类似汽车一样的复杂对象,它们拥有一系列成员属性,这些成员属性中有些是引用类型的成员对象。而且在这些复杂对象中,还可能存在一些限制条件,如某些属性没有赋值则复杂对象不能作为一个完整的产品使用;有些属性的赋值必须按照某个顺序,一个属性没有赋值之前,另一个属性可能无法赋值等。 复杂对象相当于一辆有待建造的汽车,而对象的属性相当于汽车的部件,建造产品的过程就相当于组合原创 2016-07-29 18:08:04 · 404 阅读 · 0 评论 -
java设计模式——观察者模式(Observer Pattern)
概述: 观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。定义: 定义对原创 2016-08-29 15:25:06 · 582 阅读 · 0 评论 -
java设计模式——备忘录模式(Memento Pattern)
概述: 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式。 定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种...原创 2016-08-19 15:27:55 · 448 阅读 · 0 评论 -
java设计模式——原型模式(Prototype Pattern)
概述: 在使用原型模式时,我们需要首先创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象。需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同的方式修改可以得到一系列相似但不完全相同的对象。 定义: 原型模式(Prototype...原创 2016-08-18 17:07:07 · 809 阅读 · 0 评论 -
java设计模式——单例模式(Singleton Pattern)
定义: 单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。 单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。要点:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。单例模式在开发中经常会被用到,原创 2016-07-28 17:36:41 · 407 阅读 · 0 评论