设计模式
jakey_jp黄导
To coding or not to coding, that's a question !
展开
-
Java/Android 设计模式系列(5)--对象池模式
这次要介绍一下对象池模式(Object Pool Pattern),这个模式为常见 23 种设计模式之外的设计模式,介绍的初衷主要是在平时的 Android 开发中经常会看到,比如 ThreadPool 和 MessagePool 等。 在 Java 中,所有对象的内存由虚拟机管理,所以在某些情况下,需要频繁创建一些生命周期很短使用完之后就可以立即销毁,但是数量很大的对象集合,那么此时 GC转载 2017-08-26 18:12:03 · 331 阅读 · 0 评论 -
Java/Android 设计模式系列(17)--策略模式
这篇博客我们来介绍一下策略模式(Strategy Pattern,或者叫 Policy Pattern),也是[行为型模式]之一。通常在软件开发中,我们为了一个功能可能会设计多种[算法](http://lib.csdn.net/base/datastructure "算法与数据结构知识库")转载 2017-08-27 16:24:46 · 276 阅读 · 0 评论 -
Java/Android 设计模式系列(18)--中介者模式
这篇博客我们介绍一下中介者模式(Mediator Pattern),也是[行为型模式]之一,中介者模式也称为调解者模式或者调停者模式,顾名思义,它的作用是在若干类或者若干模块之间承当中介。 通常情况下,一个程序必然要包含大量的类,随着项目的进行,类和模块的数量必然要进一步增加,特别是当需转载 2017-08-27 16:30:21 · 303 阅读 · 0 评论 -
Java/Android 设计模式系列(19)--状态模式
这篇博客我们来介绍一下状态模式(State Pattern),也是[行为型设计模式]之一。状态模式的行为是由状态来决定的,不同的状态下有不同的行为。状态模式和[策略模式]转载 2017-08-28 12:04:52 · 225 阅读 · 0 评论 -
Java/Android 设计模式系列(20)--迭代器模式
我们这篇博客来介绍一下迭代器模式(Iterator Pattern),又称为游标(Cursor Pattern)模式,是[行为型设计模式]之一。迭代器模式算是一个比较古老的设计模式,其源于对容器的访问,比如 [Java]转载 2017-08-28 12:06:05 · 184 阅读 · 0 评论 -
Java/Android 设计模式系列(21)--备忘录模式
这篇博客我们来介绍一下备忘录模式(Memento Pattern),也是[行为型模式设计模式]之一,备忘录模式又称为快照(Snapshot Pattern)模式或者 Token 模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态。备忘录模式实现的方式需要保证被保存的转载 2017-08-28 12:06:50 · 227 阅读 · 0 评论 -
Java/Android 设计模式系列(22)--模板方法模式
这篇博客我们来介绍一下模板方法模式(Template Method Pattern),也是[行为型设计模式]之一。在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个[算法](http://lib.csdn.net/base/datastructure "算法与数据结构知识库")所需转载 2017-08-28 12:07:35 · 249 阅读 · 0 评论 -
Java/Android 设计模式系列(23)--解释器模式
这篇博客我们来介绍一下解释器模式(Interpreter Pattern),也是[行为型设计模式]之一,是一种用的比较少的设计模式,其提供了一种解释语言的语法或表达式的方式,该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。在这么多的设计模式中,解释器模式在实际运用上相对来说要少很转载 2017-08-28 12:08:17 · 269 阅读 · 0 评论 -
Java/Android 设计模式系列(24)--访问者模式
这篇博客我们来介绍访问者模式(Visitor Pattern),这也是[行为型设计模式]之一。访问者模式是一种将数据操作与[数据结构](http://lib.csdn.net/base/datastructure "算法与数据结构知识库")分离的设计模式,它可以算是 23 中设计模式中最复杂转载 2017-08-28 12:09:04 · 267 阅读 · 0 评论 -
Java/Android 设计模式系列(1)--单例模式
单例模式,这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑。设计模式总目录 Java/Android 设计模式系列–目录特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的使用很广泛,比如:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置、和转载 2017-08-26 17:07:42 · 325 阅读 · 0 评论 -
Java/Android 设计模式系列(2)--观察者模式
这篇来讲一下观察者模式,观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦转载 2017-08-26 17:19:43 · 249 阅读 · 0 评论 -
Java/Android 设计模式系列(3)--工厂方法模式
这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或取得对象的初始设置;选择生成哪个子对象实例;或在生成你需要的对象之前必须先生成一些辅助功能的对象,这个时候就需要了解该对象创建的细节,也就是说使用的地方与该对象的实现耦合在了一起,不利于扩展,为了解决这转载 2017-08-26 17:33:14 · 298 阅读 · 0 评论 -
Java/Android 设计模式系列(16)--命令模式
这篇博客我们来介绍一下命令模式(Command Pattern),它是[行为型设计模式]之一。命令模式相对于其他的设计模式更为灵活多变,我们接触比较多的命令模式个例无非就是程序菜单命令,如在[操作系统]转载 2017-08-27 16:18:47 · 235 阅读 · 0 评论 -
Java/Android 设计模式系列(15)--责任链模式
这篇博客我们来介绍一下责任链模式(Chain-of-responsibility Pattern),责任联模式又称为职责链模式,是[行为型设计模式]之一。顾名思义,责任链模式中存在一个链式结构,多个节点首尾相连,每个节点都可以被拆开再连接,因此,链式结构具有很好的灵活性。将这样一种结构应转载 2017-08-27 16:14:28 · 241 阅读 · 0 评论 -
Java/Android 设计模式系列(6)--适配器模式
这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式。在我们的实际生活中也有很多类似于适配器的例子,比如香港的插座和大陆的插座就是两种格式的,为了能够成功适配,一般会在中间加上一个电源适配器,形如: 这样就能够将原来不符合的现有系统和目标系统通过适配转载 2017-08-26 18:48:55 · 253 阅读 · 0 评论 -
Java/Android 设计模式系列(7)--装饰者模式
这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一,但比继承更加灵活。在现实生活中也可以看到很多装饰者模式的例子,或者可以大胆的说装饰者模式无处不在,就拿一件东西来说,可以给它披上无数层不一样的外壳,但是这件东西还是这件东西,转载 2017-08-26 18:53:56 · 395 阅读 · 0 评论 -
Java/Android 设计模式系列(8)--桥接模式
这篇博客我们来介绍一下桥接模式(Bridge Pattern),它也是结构型设计模式之一。桥接,顾名思义,就是用来连接两个部分,使得两个部分可以互相通讯或者使用,桥接模式的作用就是为被分离了的抽象部分和实现部分搭桥。在现实生活中也有很多这样的例子,一个物品在搭配不同的配件时会产生不同的动作和结果,例如一辆赛车搭配的是硬胎或者是软胎就能够在干燥的马路上行驶,而如果要在下雨的路面行驶,就需要搭配雨胎了,转载 2017-08-26 19:00:19 · 291 阅读 · 0 评论 -
Java/Android 设计模式系列(9)--代理模式
这篇博客我们来介绍一下代理模式(Proxy Pattern),代理模式也成为委托模式,是一个非常重要的设计模式,不少设计模式也都会有代理模式的影子。代理在我们日常生活中也很常见,比如上网时连接的代理服务器地址,更比如我们平时租房子,将找房子的过程代理给中介等等,都是代理模式在日常生活中的使用例子。 代理模式中的代理对象能够连接任何事物:一个网络连接,一个占用很多内存的大对象,一个文件,或者是一转载 2017-08-26 19:07:53 · 428 阅读 · 0 评论 -
Java/Android 设计模式系列--目录
介绍 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。一个设计模式并不是能够用于代码中的,而是提供一个在不同情况下解决问题的模板示例。设计模式允许开发者用一个大家都熟知的编码方式进行交流,有利于软件的扩展性和可维护性。职责 设计模式当然也需要遵循面向对象设计的6大原则:单一职责原则 单一职责的英文名称是Single Responsib转载 2017-08-26 16:43:01 · 596 阅读 · 0 评论 -
从Android/Java基础之上学习C/C++语言 --目录
从Android/Java基础之上学习C/C++语言总目录从Android/Java基础之上学习C/C++语言(1)–C语言基础–基本数据类型从Android/Java基础之上学习C/C++语言(2)–C语言基础–指针从Android/Java基础之上学习C/C++语言(3)–C语言基础–内存分配从Android/Java基础之上学习C/C++语言(4)–C语言基础–字符串原创 2017-08-27 14:30:33 · 641 阅读 · 1 评论 -
Java/Android 设计模式系列(10)--建造者模式
这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离。Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。一个复杂的对象有大量的组成部转载 2017-08-27 14:31:40 · 257 阅读 · 0 评论 -
Java/Android 设计模式系列(11)--原型模式
这篇博客我们来介绍一下剩下的最后一个创建型模式:原型模式(Prototype Pattern)。该模式有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程在 C++ 中就是一个克隆。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可以使程序运行效率更高。 这个模式的重点在于,客户端转载 2017-08-27 14:32:20 · 214 阅读 · 0 评论 -
Java/Android 设计模式系列(12)--组合模式
这篇我们来介绍一下组合模式(Composite Pattern),它也称为部分整体模式(Part-Whole Pattern),结构型模式之一。组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别。这个最典型的例子就是数据结构中的树了,如果一个节点有子节点,那么它就是枝干节点,如果没有子节点,转载 2017-08-27 14:32:57 · 237 阅读 · 0 评论 -
Java/Android 设计模式系列(13)--享元模式
这篇我们来介绍一下享元模式(Flyweight Pattern),Flyweight 代表轻量级的意思,享元模式是对象池的一种实现。享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,缓存可共享的对象,来达到对象共享和避免创建过多对象的效果,这样一来就可以提升性能,避免内存移除和频繁 GC 等。转载 2017-08-27 16:00:14 · 316 阅读 · 0 评论 -
Java/Android 设计模式系列(14)--外观模式
这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式。通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块、ImageLoader 模块等。其实我们在开发过程中可能已经使用过转载 2017-08-27 16:10:14 · 282 阅读 · 0 评论 -
Java/Android 设计模式系列(4)--抽象工厂模式
再来介绍一下抽象工厂模式(Abstact Factory Pattern),也是创建型模式之一,上篇博客主要介绍了工厂方法模式。抽象工厂模式和工厂方法模式稍有区别。工厂方法模式中工厂类生产出来的产品都是具体的,也就是说每个工厂都会生产某一种具体的产品,但是如果工厂类中所生产出来的产品是多种多样的,工厂方法模式也就不再适用了,就要使用抽象工厂模式了。 抽象工厂模式的起源或者最早的应用,是对不同操转载 2017-08-26 17:45:36 · 277 阅读 · 0 评论