![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 77
飞鸟青崖
这个作者很懒,什么都没留下…
展开
-
访问者模式
定义 表示一个作用于某对象结构中各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。关键字 操作分离——将一个类中操作与这个类进行分离,在不改变这个类的前提下可以定义新的操作。适用性 1,一个对象结构中包含很多类对象,它们有不同的接口,但想对这些对象定义一些依赖于其具体类的操作。此时使用访问者模式可以避免对对象原创 2016-12-26 18:36:31 · 301 阅读 · 0 评论 -
迭代器模式
定义 提供一种方法顺序地访问一个集合对象中各个元素,而又不需要暴露该对象的内部表示。 对于一个集合来说,它应该有提供一种方法让外界可以对它进行遍历,同时根据不同的需求也需要支持多种遍历方式。由于不能预知所有的遍历需求,所以不可能在集合中写出所有的遍历逻辑(即使能预知所有的需求,也不应该在集合中写出所有的遍历方式)。 迭代器模式可以解决这个问题,原创 2016-12-09 18:39:32 · 380 阅读 · 0 评论 -
策略模式与桥接模式
策略模式:参考:http://zhanche2011.iteye.com/blog/1169948原创 2014-10-12 21:09:37 · 1299 阅读 · 0 评论 -
享元模式
基础 参考 通过对对象的共享(重复使用),避免创建过多对象。因为过多的对象将损耗应用的性能,甚至是造成内存泄露。对于共享的对象,可以将其中的属性分为两个部分:某个对象独有的部分与可共享的部分(叫内部状态与外部状态,但网上的概念不统一,也不知道谁是谁)。享元工厂 由于对象需要重复使用,因此必须提供一个获取对象的工厂类——不能让使用者自己new原创 2016-05-03 23:04:38 · 289 阅读 · 0 评论 -
门面模式与中介者模式
门面模式概念 为子系统的一组接口提供一个统一使用的界面。它方便了外界对子系统的使用,减少了学习成本——一般的用户只需要了解门面类即可,不需要了解子系统内部的各种处理逻辑。但,外界并不是只能通过门面类访问子系统,可以直接绕过子系统访问子系统的底层。 门面类并不参与子系统的各种逻辑,它只是一个为了方便外界使用的接口。因此,子系统内部并不知道门面类的存在。而且门面原创 2016-08-23 11:37:41 · 692 阅读 · 0 评论 -
模式汇总
参考 设计模式之禅——里面关于模式的定义基本上都是来自于该书。单例 一个系统中只有一个实例。 1,可以减少内存开支,实现数据共享。 2,单例为静态的,生命周期与应用一样长 。处理不好,容易造成内存泄漏。 3,单例可扩展为多例:一个系统中只有固定个数的实例。工厂方法 定义一个用于创建对原创 2016-06-07 23:38:51 · 599 阅读 · 0 评论 -
责任链模式
参考 http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html概念 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这原创 2015-03-13 17:48:54 · 504 阅读 · 0 评论 -
装饰模式
定义 动态的给一个对象添加一些额外的功能。就添加功能来说,装饰模式比继承更灵活。关键词 灵活——装饰模式比继承要灵活得多。 动态、透明——外界不需要区分当前使用的是装饰者还是被装饰者。因为两者具有相同的接口。 撤销——可以很方便地撤销对某个对象的装饰操作。使用场景 1,在不影响其他对象的情况下,为某一原创 2016-08-19 12:50:34 · 359 阅读 · 0 评论 -
适配器与组合模式
定义 将一个类的接口转换成客户希望的另外一个接口,适配器模式使原本由于接口不兼容而不能一起工作的类可以一起工作。关键词 转换、兼容——转换接口,使不能兼容的接口可以兼容。分类 类适配器与对象适配器。 类适配器:继承或实现多个接口,使该类可以在不同的系统中使用。如系统A有接口IA,系统B有接口IB,定义类Adapter即原创 2016-08-10 18:06:48 · 829 阅读 · 0 评论 -
代理模式
定义 为其他对象提供一个代理以控制对这个对象的访问。其主要目的是在被代理对象方法的基础上做一定的扩展和增强。普通代理基础版 比如想统计某个方法的执行时间,简单点可以直接修改原方法,在方法开始前输出时间,结束前输出时间。但这种思路直接修改了原方法,而且在原方法中添加了额外的逻辑处理。此时就可以使用代理模式: 代理类持有一个被代理类的引用,原创 2016-05-04 17:37:43 · 373 阅读 · 0 评论 -
MVP入门
基础 官方demo mvc中,c指的是activity等,但它同时又承担了一部分的v工作,显得混乱冗长。而mvp中,将v当作activity,新添加一层做为p,m层不变。 对于官方的demo,整体包结构采用的是按模板划分包的。如下: 其中util指的是一些工具类,data指的是数据层(m层),本demo中使用到bean原创 2016-05-31 16:37:36 · 1397 阅读 · 1 评论 -
新模式以及设计模式比较
工厂方法与建造者 工厂方法专注于整体的创建,创建出来的对象完全相同。如BitmapFactory,调用其中的方法直接返回一个Bitmap,而无法对Bitmap进行任何的设置。 建造者,专注于部件的构建以及设置,通过一个部件一个部件的设置,精确的创建出一个复杂对象,并且对象完全不同。如AlertDialog.Builder,可以使用它设置title、message原创 2016-06-09 21:43:07 · 606 阅读 · 0 评论