设计模式
android_mobile_os
移动
展开
-
中介者模式
一)故事二)定义用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。三)代码例子由四部分组成:1)抽象中介者;2)具体中介者;3)抽象同事类;4)具体同事类(可多个);1)抽象中介者:/** * 抽象中介者 * * @author levovo */public abstrac转载 2013-04-06 10:15:36 · 519 阅读 · 0 评论 -
抽象工厂模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。三)代码例子四)优点五)缺点六)使用场景抽象工厂模式的使用场景定义非常简单:一个对象族(或是一组没有任何关系的对象)都有相同的约束,则可以使用抽象工厂模式。什么意思呢?例如一个文本编辑器和一个图片处理器,都是软件实体,但是*nix下的文本编辑器和Windows下的文转载 2013-04-10 21:09:35 · 577 阅读 · 0 评论 -
门面模式(未完成) --- 用时再写
一)故事二)定义要求一个子系统的外部与其内部的通信必须通过一个统一的对象进。门面模式提供一个高层次的接口,使得子系统更易于使用。三)代码例子(未完成)四)优点(未完成)五)缺点(未完成)六)使用场景1)为一个复杂的模块或者子系统提供一个供外界访问的接口2)子系统相对独立------外界对子系统的访问在只要黑箱操作即可比如利息的计算问题,没有深转载 2013-04-10 17:50:42 · 480 阅读 · 0 评论 -
策略模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。也叫政策模式。三)代码例子四)优点五)缺点六)使用场景1)多个类只有在算法或行为上稍有不同的场景。2)算法需要自由切换的场景。例如,算法的选择是由使用者决定的,或者算法始终在进化,特别是一些站在技术前沿的行业,连业务专家都无法给你保证这样的系统规则能够存在多长时间转载 2013-04-10 21:08:58 · 520 阅读 · 0 评论 -
访问者模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。三)代码例子四)优点五)缺点六)使用场景1)一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作,也就是说用迭代器模式已经不能胜任的情景。2)需要对一个对象结构中的对象进行很多不同并且不相关转载 2013-04-10 21:10:35 · 542 阅读 · 0 评论 -
适配器模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义接一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。三)代码例子四)优点五)缺点六)使用场景你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或者新建立的类,但这个类又不符合系统的接口,怎么办?请使用适配器。七)注意事项转载 2013-04-10 21:12:08 · 650 阅读 · 0 评论 -
状态模式(未完成) (未看代码,只填了使用场景)
一)故事二)定义当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。三)代码例子四)优点五)缺点六)使用场景1)行为随状态改变而改变的场景。这也是状态模式的根本出发点,例如权限设计,人员的状态不同即使执行相同的行为结果也会不同,在这种情况下需要考虑使用状态模式。2)条件、分支判断语句的替代者在程序中大量使用switch语句转载 2013-04-10 21:13:26 · 511 阅读 · 0 评论 -
桥梁模式
一)故事二)定义将抽象和实现解耦,使得两者可以独立地变化。三)代码例子共计四个类:1)实现化角色;2)具体实现化角色(可多个);3)抽象化角色;4)具体抽象化角色(可多个);1)实现化角色/** * 实现化角色(产品类) * * @author levovo */public abstract class AbsProduct { public转载 2013-04-10 17:18:03 · 463 阅读 · 0 评论 -
备忘录模式(未完成)--- 用时再写
一)故事二)定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。三)代码例子(未完成)四)优点(未完成)五)缺点(未完成)六)使用场景1)需要保存和恢复数据的相关状态场景。2)提供一个可回滚(rollback)的操作;比如Work中的CTRL+Z组合键,IE浏览器中的后退按钮,转载 2013-04-10 17:42:23 · 624 阅读 · 0 评论 -
享元模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义使用共享对象可有效地支持大量的细粒度的对象。是池技术的重要实现方式。三)代码例子四)优点五)缺点六)使用场景1)系统中存在大量的相似对象。2)细粒度的对象具备较接近的外部状态,而且内部状态与环境无关,也就是说对象没有特定身份。3)需要缓冲池的场景。七)注意事项八)扩展九)总结转载 2013-04-10 21:12:39 · 487 阅读 · 0 评论 -
组合模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。三)代码例子四)优点五)缺点六)使用场景1)维护和展示部分一整体关系的场景,如树形菜单、文件和文件夹管理。2)从一个整体中能够独立出部分模块或功能的场景。七)注意事项八)扩展九)总结转载 2013-04-10 21:13:49 · 484 阅读 · 0 评论 -
命令模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。三)代码例子四)优点五)缺点六)使用场景只要你认为是命令的地方就可以采用命令模式,例如,在GUI开发中,一个按钮的点击是一个命令,可以采用命令模式;模拟DOS命令的时候,当然也要采用命令模式;触发 - 反馈机制的处转载 2013-04-10 21:11:39 · 708 阅读 · 0 评论 -
观察者模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。三)代码例子四)优点五)缺点六)使用场景1)关联行为场景。需要注意的是,关联行为是可拆分的,而不是“组合”关系。2)事件多组触发场景。3)跨系统的消息交换场景,如消息队列的处理机制。七)注意事项八)扩展转载 2013-04-10 21:10:59 · 512 阅读 · 0 评论 -
工厂方法模式
一)故事女娲造人,创造白人,创造黑人,创造黄人。二)定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。三)代码例子由四部分组成:1)抽象工厂类;2)具体工厂类;3)抽象产品类;4)具体产品类(可多个);1)抽象工厂类/** * 抽象工厂类 * * @author levovo */public abst转载 2013-04-06 21:47:53 · 513 阅读 · 0 评论 -
建造者模式
一)故事变化是永恒的二)定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(也叫生成器模式)三)代码例子共计五个类:1)抽象产品类;2)具体产品类(可多个);3)抽象建造者类;4)具体建造者类(可多个);5)导演类(用于封装Builder具体类);1)抽象产品类/** * 抽象产品类 * * @author levovo *转载 2013-04-07 15:06:43 · 505 阅读 · 0 评论 -
迭代器模式
一)故事二)定义它提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。三)代码例子四)优点五)缺点六)使用场景七)注意事项八)扩展九)总结迭代器就类似于一个数据库中的游标,可以在一个容器内上下翻滚,遍历所有它需要查看的元素。迭代器模式有点没落了,基本上很少有项目再独立写迭代器,直接使用Collectio转载 2013-04-07 15:38:00 · 443 阅读 · 0 评论 -
单例模式(未完成)
一)故事二)定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。三)代码例子共计两个类组成:1)普通类;2)单例类;1)普通类/** * 普通类 * * @author levovo */public class A { public A() { System.out.println("A()->A()");转载 2013-04-07 16:03:20 · 489 阅读 · 0 评论 -
原型模式
一)故事个性化电子账单二)定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。三)代码例子共计一个类:1)原型类;1)原型类/** * 原型类 * * @author levovo */public class PrototypeClass implements java.lang.Cloneable { private St转载 2013-04-08 14:44:05 · 575 阅读 · 0 评论 -
模板方法模式
一)故事二)定义定义一个操作中的算法和框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法和某些特定步骤。三)代码例子共计两个类:1)抽象模板类;2)具体模板类(可多个);1)抽象模板类/** * 抽象模板类 * * @author levovo */public abstract class AbsClass {转载 2013-04-07 20:32:06 · 502 阅读 · 0 评论 -
设计模式分类和含意
设计模式主要分三个类型:五种创建型、七种结构型和十一种行为型。 +++ 创建型有: (五种) 一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。 三、Factory Method,工厂方法:定义一个用于创转载 2013-04-08 15:46:44 · 418 阅读 · 0 评论 -
解释器模式(未完成)
一)故事四则运算你会吗?二)定义给定一门语言,定义它的方法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。三)代码例子(未完成)四)优点解释器是一个简单语法分析工具,它最显著的优点就是扩展性,修改语法规则只要修改相应的非终结符表达式就可以了,若扩展语法,则只要增加非终结符类就可以了。五)缺点(未完成)1)2)3)六转载 2013-04-08 15:46:03 · 527 阅读 · 0 评论 -
责任链模式(未完成)--- 用时再写
一)故事二)定义使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。三)代码例子(未完成)共计五个类:四)优点(未完成)五)缺点(未完成)六)使用场景七)注意事项八)扩展九)总结转载 2013-04-10 17:35:19 · 408 阅读 · 0 评论 -
代理模式(未完成)(未看代码,只填了使用场景)
一)故事二)定义为其他对象提供一种代理以控制这个对象的访问。三)代码例子四)优点五)缺点六)使用场景我相信第一次接触到代理模式的读者肯定很郁闷,为什么要用代理啊?想想现实世界吧,打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成或自己的答辩就成了,其它的比如事前调查、事后追查都由律师搞定,这就是为了减轻你的负担。代理模式的使用场景非常转载 2013-04-10 21:10:08 · 652 阅读 · 0 评论 -
装饰模式
一)故事二)定义动态地给一个对象添的加一些额外职责。就增加功能来说,装饰模式相比生成子类更为灵活。三)代码例子共计四个类:1)抽象构件类;2)具体构件类;3)抽象装饰者类(可省略);4)具体的装饰类(可多个);若只有一个装饰类,则可以没有“抽象装饰类”角色,直接实现“具体的装饰类”角色即可。1)抽象构件类/** * 抽象构件类 * * @author转载 2013-04-10 21:13:04 · 581 阅读 · 0 评论