Java设计模式-解释器模式

解释器(Interpreter)模式,在23种设计模式中属于类行为型模式。 解释器模式:定义一个语言的文法,并建立一个解释器用于解释该文法表示的句子。 引言 在平常开发中解释器模式是一种使用频率低难度相对较大的设计模式,它用于描述如何使用面向对象的方式来构成一个简单的语言解释器。在某些场景下,为了更好地描述某些特定问题,有时会创建一门新的语言,这种语言拥有自己的表达式和结构,即文法规则,然后 [...]

Java设计模式-访问者模式

访问者(Visitor)模式,在23种设计模式中属于对象行为型模式,也是Java语言模拟双分派机制的一种实现方式。 访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 引言 在GOF定义的23中设计模式中,除去本文所介绍的一种模式之外,还剩解释器模式、迭代器模式以及原型模式。其实,本来想整理一下其它方向的内容,但是后来想想,已 [...]

Java设计模式-组合模式

组合(Composite)模式,在23种设计模式中属于对象结构型模式。 组合模式将对象整理成树形结构以表示“部分-整体”的层次结构,它可以使用户对单个对象和组合对象的操作具有一致性。 模式介绍 从接触面向对象语言起,我们就被告知封装、继承和多态是面向对象的三大特性,其中继承和多态中的重写特性更是使用继承机制的直观体现。随着时间的推移,我们对面向对象语言的经验理解也不断增强,在各种编程实践书籍 [...]

Java设计模式-中介者模式

中介者(Mediator)模式,在23种设计模式中属于对象行为型模式。 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 模式介绍 在平常开发的业务场景中,可能会遇到多个对象交叉引用的情况,而且这些对象之间的行为还相互影响。各个对象之间的交互犹如一张蜘蛛网一样,一个对象的行为会影响其它一个或多个对象,同样的,自己也会 [...]

Java设计模式-享元模式

享元(Flyweight)模式,有时也被称为蝇量模式或者轻量级模式,在23种设计模式中属于对象结构型模式。 享元模式是运用共享技术有效地支持大量细粒度对象的复用。 模式介绍 在平常面向对象的软件开发中,偶尔会遇到这种场景,业务比较复杂,需要构建大量的对象,但是这些对象又很相似,状态变化比较小。比如设计一款围棋游戏、丛林探险类游戏或者常见的文本处理软件,在这些场景中棋子、树木或者字符都被设计为 [...]

Java设计模式-备忘录模式

备忘录(Memento)模式,有时也被称为快照(Snapshot)模式或者Token模式,在23种设计模式中属于对象行为型模式。 备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 模式介绍 备忘录模式,直接根据模式名称理解它的使用场景可能让人有些困惑,其实备忘录模式提供的就是软件实现中的一种历史记录机制,或者说是 [...]

Java设计模式-模板方法

模板(Template Method)方法模式,在23种设计模式中属于类行为型模式。 模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模式介绍 无论是对后台或者前端开发人员,相信模板这个词应该都不会感到陌生。前端的模板框架template.js,初始学jsp时include指令或者include [...]

Java设计模式-命令模式

命令(Command)模式,有时也被称为动作(Action)模式或者事务(Transaction)模式,在23种设计模式中属于对象行为型模式。 命令模式将请求封装成对象,以便使用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 模式介绍 在开发中,请求响应的场景非常常见,一般会把请求的响应操作封装到一个方法中,比如在Servlet中可以把这种操作放在doGet( [...]

Java设计模式-装饰模式

装饰(Decorator)模式,有时也被称为包装(Wrapper)模式,在23种设计模式中属于对象结构型模式。 装饰模式以对客户端透明的方式扩展对象的功能,换句话说,客户端并不会觉得对象在装饰前和装饰后有什么区别。装饰者提供了比继承更有弹性的替代方案。 模式介绍 下图可以更方便理解装饰模式。 在图片中第二列展示的是不同风格的相框,如果使用继承机制,那么最后一列的相框风格就不是第二列的后 [...]

Java设计模式-状态模式

状态(State)模式有时也称为状态对象(Objects for States)模式,在23种设计模式中属于对象行为型模式。 《GOF设计模式》一书中是这样定义状态模式的,状态模式允许一个对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 适用性 对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 一个操作中含有庞大的多分支的条件语句,且这些分支依赖 [...]

Android 浅谈SurfaceView

SurfaceView简介 SurfaceView在开发中可能不常用到,但是在游戏、视频或者复杂的交互特效中却独显优势了。可能有些开发者说,还有GLSurfaceView或者TextureView,这两个View不在本文探讨范围内。 SurfaceView也是继承自View,不过现在高版本上面查看源码可能是MockView,如果熟悉单元测试,可以看到这种命名方式就是测试中常用的命名方式,可以在 [...]

Android 正弦和贝塞尔曲线简单应用

本文主要就介绍如何使用正余弦或者贝塞尔曲线实现一个类似水波纹加载的动效。如果有看前面的文章,可以知道现在使用贝塞尔曲线相对比较容易,因为Android的Path中就有贝塞尔曲线的API,可以直接使用。但是,正余弦在Path中确实没有什么API供开发者直接使用,那么只能另寻其它方式了。 先上图,俗话说一图顶千言。 正弦曲线 在Path的API中有lineTo(x,y)方法,使用Math [...]

Android 浅谈贝塞尔曲线

本文也是自定义控件相关的内容,主要介绍贝塞尔曲线在Android开发中的应用。 首先通过理论介绍一下贝塞尔曲线的基本实现原理,然后借助于图片演示了一下贝塞尔曲线的实现方式。文中更多介绍的是关于二阶和三阶贝塞尔曲线的内容,如果想了解更高阶贝塞尔曲线内容,可以上网查看了解更多。 Android中提供了二阶和三阶贝塞尔曲线的API,借助于这些API可以实现许多炫酷的交互,比如加入购物车、水波纹、点赞 [...]

Android Path和PathMeasure

本文继续介绍自定义控件的相关内容,Path在一些高级特效中使用相当广泛,如一些加载特效、刮刮卡和前段时间的比较火的撕衣应用。 Path一般结合xfermode或者贝塞尔曲线做一些很炫的交互效果,有关贝塞尔曲线的内容这里暂不涉及,本文主要介绍Path的一些简单基础用法,相关的类还包括PathMeasure,需要掌握PathMeasure的两个方法:getLength()、getSegment。 [...]

Android Canvas用法之save、restore和saveLayer

本文跟上一篇博文类似,也是介绍自定义控件的相关内容,主要是onDraw()中常使用的方法。 主要涉及三个方法:save()、restore()、saveLayer(),当然了也会涉及到其它的方法,如restoreToCout()、setXfermode()。 重点需要掌握如何使用save()、restore()、saveLayer(),文中会通过示例代码以及运行后截图来对比展示,如果使用sav [...]
共 11 页 1 2 3 4 5 6 7 8 9 10