Jfson‘s blog

慢慢来,比较快

访问者模式(Visitor)

访问者模式(Visitor)允许您向对象添加更多操作,而无需修改它们。在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式 我们将创建一个定义接受操作的 ComputerPart 接口。Keyboard、Mouse、Monitor 和 Computer 是......

模板模式(Template Pattern)

模板方法定义了如何执行某个算法的框架,但是将这些步骤的实现推迟到子类。在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 使用场景: 1、有多个子类共有的方法,且逻辑相同。 2、重要的、复杂的方法,可以考虑作为模板方法。 抽象类的抽象方法 12......

中介者模式(Mediator)

Mediator 模式添加第三方对象(称为 mediator)来控制两个对象(称为同事)之间的交互。它有助于减少彼此通信的类之间的耦合。因为现在他们不需要了解彼此的实施。 示例:MVC模式 1234567891011121314151617181920212223242526272829303132333435363738//创建中介类。public class ChatRoom ......

备忘录模式(Memento)

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。Memento 模式是关于以稍后可以以平滑方式恢复的方式捕获和存储对象的当前状态 应用实例: 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri + z。 4、IE 中的后退。 4、数据库的事务管理。 123456789101112131415161......

状态模式(State Pattern)

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 使用场景: 1、行为随状态改变而改变的场景。 2、条件、分支语句的代替者。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555......

责任链模式(Chain Of Responsibilities)

责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 它有助于构建一系列对象。请求从一端进入并继续从一个对象到另一......

策略模式(Strategy)

策略模式允许您根据情况切换算法或策略。 12345678910111213141516171819202122232425262728293031interface Sort{ void sort(); } class QuickSort implements Sort{ @Override public......

迭代器模式(Iterator)

它提供了一种访问对象元素而不暴露底层表示的方法。 示例:收音机频道切换 应用实例:JAVA 中的 iterator。 1234567891011121314151617181920212223242526272829303132333435363738394041public class NameRepository implements Container { publi......

命令行模式(Command)

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 一个通用的例子是你在餐厅点餐。您(即Client)要求服务员(即Invoker)携带一些食物(即Command),服务员只是将请求转发给主厨(即Receiver),该主厨知道......

享元模式(Flyweight)

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 20 个分布于不同位置的圆来演示这种模式。由于只有 5 种可用的颜色,所以 color 属性被用来检......

桥接模式(Bridge)

桥接模式是关于优先于继承的组合。实现细节从层次结构推送到具有单独层次结构的另一个对象。将抽象部分与实现部分分离,使它们都可以独立的变化 桥接模式是软件工程中使用的设计模式,旨在“将抽象与其实现分离,以便两者可以独立变化” 示例:画圆。同时需要多个元素拼接,但又不想复杂继承12345678910111213141516171819202122232425262728293031323334......

外观模式(Facade)

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 Facade 模式为复杂的子系统提供了简化的界面。电脑很复杂,开机就一个键。外观是一个对象,它为更大的代码体提供了简化的接口,例如类库。 12345678910111213141516171819202......

装饰模式(Decorator)

装饰器模式,Decorator模式允许您通过将对象包装在装饰器类的对象中来动态更改对象在运行时的行为。 用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。 1234567891011121314151617181920212223242526272829303132333435363738//创建一个接......

SVGA 源码

SVG 概念 SVG 实际上指的是设计软件中的概念:SVG图片格式,一种矢量图形。 另一个角度来讲一张图或者一个动画,是由很多上下层级的图层构成。比如当前的简单的图,看到的是一张图,但在设计工具中是三个图层构成,有着不同的上下层级顺序。 SVGA成本 SVGA目不支持种类: 不支持复杂的矢量形状图层 AE自带的渐变、生成、描边、擦除… 对设计工具原生动画不友好,对图片动画友好(适合映......

TextView如何优化

大量文本刷新时,性能出现瓶颈,譬如:直播中的聊天 绘制 和 measure 时间比较长 优化 1.节省 measure 时间,Android有很多用于文字展示的控件,但实际上,他们都用text.Layout进行渲染。例如,TextView会将String转化为一个text.Layout对象,并通过canvas API将它绘制到屏幕上。由于text.Layout需要在构造函数中测量文本的高度,......

观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 一个很经典的例子,上传文件,成功的时候,需要通知给多个位置发送上传成功消息示例。 1.JAVA 中已经有了对观察者模式的支持类。 2、避免循环引用。 3、如果顺序执行,某一观察者错误会导致系统卡壳,一般采用异步方式。 12345678......

Android系统层次框架结构

由低到高:linux核心层;系统运行库层;应用程序框架层;应用程序层 linux内核(Linux Kernel)硬件相关的,Binder Diver(IPC),Camera Diver,Power Diver等等 系统运行库层(Libraries) Android 相关: 虚拟机:Dalvik,Android 5.0(Lollipop)开始,Android Runtime(下文简称ART)......

匿名类优化

举例说明,通常对动画进行监听时的addListener需要对匿名类复写所有的回调监听,如果用一个实现接口类,去包一层,这时候添加回调监听时只需要Override需要的方法,大大增加代码可读性和简洁性,参考test()方法中的两种setListener方式。 往往只需要end回调时,避免了重写其他多余的方法 12345678910111213141516171819202122232425......

RecyclerView分析

Adapter RecyclerView LayoutManager ViewHolder RecyclerView.Adapter Datas ItemAnimator 、LayoutManager 等等这些模块都当内部类写在了一块 RecyclerView是一个ViewGroup,Adapter已经将Datas转换为RecyclerView所熟知的View ItemDecoration......

你为什么努力(by 韩路)

### 你为什么努力 by 韩路 (转载 ) 1你结婚了,不和父母住一起,有了娃之后,你更体会到了父母当年的艰辛,你想好好爱爱父母,而你从来没语言表达过爱,付出物质和行动是你传递爱的手段。 你也常问父母,反正你们也退休了,多出去玩玩啊!父母总是跟你说:哎呀,老胳膊老腿不爱动啦!怕出去没医院,慢性病加重不好治了啊! 有一日,你开车带父母去了郊区的一个度假村住了一夜,突然,你会发现,原来看似......

pv UV: