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 [...]

Android画笔Paint和FontMetrics

有关自定义控件的许多内容,一直都想抽时间梳理一下,当然了梳理的内容不会很深,都是一些比较常用的类或者方法,主要是为了后续用到时方便查阅与参考。 本文主要整理的是Paint的一些基本使用方法和技巧,其中涉及到文字绘制的,涉及绘制文字时需要知道基线的坐标与View的坐标参考点是不同的,需要知道坐标之间的转换方式。另外需要知道有哪些方式可以测量已经绘制的文字所占的宽度,包括可以精确测量的方式,也有相对 [...]

Java设计模式-外观模式

外观模式又称为门面模式(Facade模式),在23种设计模式中被称为结构型模式。结构型模式分为结构型类模式和结构型对象模式,外观模式属于结构型对象模式。结构型类模式是采用继承机制来组合接口和实现,而结构型对象模式则是描述了如何对一些对象进行组合。在介绍适配器模式时,适配器模式分为类适配器和对象适配器,恰好是典型的两种结构型模式的体现。 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外 [...]

浅谈ContentProvider

ContentProvider即内容提供者,它是Android系统中提供的专门用于不同应用间进行数据共享的组件。ContentProvider提供了一套标准的接口来获取及操作数据,准许开发者把自己的应用数据根据需求开放给其他应用进行增删改查,而无须担心直接开放数据库权限而带来的安全问题。系统预置了许多ContentProvider用于获取用户数据,比如消息、联系人、日程表等。 在以前介绍其它组件 [...]

浅谈MVP架构模式

MVP即Model-View-Presenter,它是在经典的MVC(Model-View-Controller)架构基础上延伸出来的一种架构模式。Google官方也给出了一个简单的MVP示例。 MVC与MVP MVP和MVC有很多共性,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。 模型关系图如下: Model:定义数据的格式,这一点与 [...]

Git使用教程七

本文主要介绍4个Git命令,它们分别是stash、tag、rm和mv命令。stash用于暂存或者恢复当前工作目录的内容。tag用于创建,列出,删除或验证使用GPG签名的标签。rm用于删除Git版本库中跟踪的文件或者目录。mv命令用于移动或重命名文件,目录或符号链接。 git stash git stash命令用于将更改储藏在脏工作目录中。 git stash list [<option [...]

Git使用教程六

本文主要介绍两个git命令,它们分别是git rebase和git cherry-pick。git rebase可以改变分支的根基,假设有两个分支沿着不同的方向操作,使用rebase命令,可以将两条沿着不同方向的分支合并为一个分支,这两个分支路径会被更改为一条路径。不仅如此,git rebase还可以更改合并服务器上的提交记录,可以将已经提交到服务器的多条历史提交合并为一个提交记录。git mer [...]

Git使用教程五

本文已经是Git使用教程的第5篇文章了,接下来应该还会再介绍2篇,这样Git相关的内容暂时告一段落了,相信只要熟练使用这7篇文章涉及到的命令,已经可以满足日常开发的需要了。当然了关于Git的使用还有许多内容,包括许多的底层命令和高级命令,还有结合gerrit搭建等等,这些内容后续有时间会再整理一些。 在本文中,重点介绍Git中操作远程仓库3个相关命令,它们分别是fetch、pull和push。在 [...]
共 10 页 1 2 3 4 5 6 7 8 9 10