设计模式
SkylakeXun
这个作者很懒,什么都没留下…
展开
-
简单工厂模式
优秀代码的评判标准1.可维护,修改时只需要修改需要的部分2.可复用,可以被重复使用3.可扩展,扩展时只需要增加少量的部分4.灵活性好,使用的时候不需要遵循简单的规则即可实现方法通过封装 继承 多态把程序的耦合度降低简单工厂模式优点:增加新的功能时只需要新的子类即可实现Demo:实现一个简单的加减运算类//用一个抽象类表示运算类public abstract class Operation原创 2017-11-07 22:31:34 · 183 阅读 · 0 评论 -
备忘录模式__学习笔记
使用场景 /** * 备忘录模式: * 在不破坏封装的前提下,捕获一个对象的内存状态,并在这个对象之外保存这个状态. * 方便之后进行恢复 * * 作用: * 当角色的状态改变,有时候需要备份并复原 * 备忘录模式把要细节的细节封装到Memento类中,即使以后要修改实现细节...原创 2018-04-10 14:10:16 · 279 阅读 · 0 评论 -
组合模式____设计模式学习笔记
组合模式UML结构图范例/** * 为组合的对象声明接口,在适当的情况下,实现所有类共有接口的默认行. * 声明一个接口用于访问和管理Component的子部件. */public abstract class Component { public String name; public Component(String name) {...原创 2018-04-10 15:38:13 · 207 阅读 · 0 评论 -
迭代器模式____学习笔记
迭代器模式 /** * 迭代器模式: * 提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露对象的内部实现 * 需要为不同的聚集结构提供开始 下一个 是否结束 当前为哪一项等统一接口 * 该模式已经被提议撤销 * foreach in ,等就是该模式的提现 * * 应用场...原创 2018-04-11 15:48:31 · 287 阅读 · 0 评论 -
单例模式___学习笔记
单例模式 /** * 单例模式: * 保证一个类仅有一个实例,并提供一个访问它的全局方法 * * 作用: * 保证这个类没有其他实例被可以被创建 */几种不同的实现方法public enum EnumSingleInstance { INSTANCE;}public c...原创 2018-04-11 16:17:14 · 166 阅读 · 0 评论 -
桥接模式___学习笔记
桥接模式 /** * 桥接模式: * 将抽象部分和它的实现分离,使他们可以独立地变化 * 实现,指的是抽象类和他的派生类用来实现自己的对象 * * 作用: * 实现系统可能有角度分类,每一个分类都有可能变化,那么就把这种多角度分离出来让它独立变化,较少他们之间的耦合 * ...原创 2018-04-11 17:27:44 · 161 阅读 · 0 评论 -
命令模式___学习笔记
命令模式 /** * 命令模式 * 将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化; * 将请求排队或记录请求日志; * 以及支持可撤销的操作 * * 作用: * 1.较容易设计一个命令队列 * 2.在需要的情况下,容易实现将...原创 2018-04-12 10:21:20 · 253 阅读 · 0 评论 -
责任链模式__学习笔记
责任链模式 /** * 责任链模式: * 使得多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系. * 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理该请求为止 * * 作用: * 使得请求的发送者和接收者都没有对方的明确信息,且链中的自己并不知道链的结构....原创 2018-04-12 11:05:32 · 333 阅读 · 0 评论 -
中介者模式__学习笔记
中介者模式//又名调停者模式 /** * * 中介者模式: * 应用迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用. * 通过中介对象,来与其他对象进行交互,使得系统的结构不会因为新对象的引入造成大量的修改工作 * * * 作用: * 减少了...原创 2018-04-12 12:05:07 · 297 阅读 · 0 评论 -
享元模式___学习笔记
享元模式 /** * 享元模式 * 运用共享技术有效的支持大量细粒度的对象. * * 享元模式的内部&外部状态 * 享元模式内部是不会随环境变化而变化的部分,可以称为是享元对象的内部状态 * 而随着环境改变而改变,不可以共享的部分就是享元对象的外部状态了. * * 作...原创 2018-04-12 15:53:17 · 440 阅读 · 0 评论 -
解释器模式____学习笔记
解释器模式 /** * 解释器模式 * 给定一个语言,定义它的文法的一种表示,并定义一个解释器, * 这个解释器使用该表示来解释语言中的句子. * * 应用场景: * 如果一个特定类型的问题发生的频率发生地足够高,那么就值得将该问题的各个实例表示为一个简单语言的句子. * ...原创 2018-04-13 11:11:43 · 333 阅读 · 0 评论 -
适配器模式___学习笔记
应用场景 /** * 系统的数据和行为都正确,但接口不符合,我们应该考虑使用适配器模式 * 主要应用于希望复用一些现存的类,但接口和复用环境不匹配 * 举个例子,翻译者 就是适配器模式 * 目的是使控制范围之外的一个原有对象和某个接口匹配. */结构图...原创 2018-04-10 11:25:07 · 202 阅读 · 0 评论 -
状态模式
写一段函数表明你的工作状态初版public class Work { public int mCurrentHour=0; public void code(){ if (mCurrentHour<12){ Log.d("meee",getClass()+":\n"+"状态饱满:工作效率很高"); }else if(mCurre原创 2018-01-02 17:04:10 · 375 阅读 · 0 评论 -
策略模式
优点:简单工厂模式主要解决类的创建时候的耦合问题.策略模式定义了算法家族并分别封装起来,让他们之间可以互相替换.而算法的改变,不会影响算法的使用者.Demo:实现一个简单的三十六计计策类//创建一个计策抽象类public abstract class Strategy { public abstract void work();//破釜沉舟public class FightStra原创 2017-11-07 22:48:29 · 182 阅读 · 0 评论 -
装饰模式
动态的给一个对象添加一些额外的职责,就增加功能而言,装饰模式比生成子类更灵活;Demo:实现对一个人的装扮功能,要求记录穿衣的顺序public abstract class Human { public abstract void show();}//具体实现类,被修饰对象,小白public class Xiaobai extends Human { @Override原创 2017-11-07 23:24:21 · 195 阅读 · 0 评论 -
代理模式
为其他对象提供一种代理以控制这个对象的访问;Demo:远程追求女孩理想情况public class Girl { public String name; public Girl(String name) { this.name = name; }}//但是如果两个人相距很远,无法见面public class Boy { Girl gril; p原创 2017-11-07 23:58:20 · 221 阅读 · 0 评论 -
观察者模式
什么是观察者模式 * 观察者模式,又叫发布-订阅模式(Publist/Subscribe)模式; * 定义了一种一对多的依赖关系,让多个观察者对象监听某一个主题对象. * 这个主题对象发生变化时,会通知所有的观察者对象,使它们能够自动更新自己观察者模式的组成以及DemoSubject /** * Subject类,主题对象/抽象通知者,一般用一个抽象原创 2017-11-29 11:39:17 · 260 阅读 · 0 评论 -
工厂方法模式
工厂方法模式与简单工厂模式的对比简单工厂模式的最大优点就是在于工厂类中包含了必要的逻辑判断,可以根据客户端的需求自动的去选择需要的类.对于客户端而言,去除了与具体产品的依赖;但是,这违背了封闭开放原则(增加新的类时需要去改动原来的工厂类)工厂方法模式Factory Method,定义了一个用于创建对象的接口,让子类决定实例化哪一个类.使一个类的实例化延迟到其子类工厂方法模式结构图工厂方法的De原创 2017-11-29 16:25:04 · 249 阅读 · 0 评论 -
原型模式
目的就是实现深复制//实现Cloneable接口,不然调用clone()时抛出CloneNotSupportExceptionpublic class Person implements Cloneable { public String name; public Person(String name) { this.name = name; } @Ov原创 2017-11-29 17:02:01 · 216 阅读 · 0 评论 -
模版方法模式
作用把都需要实现的上放到抽象父类中,具体细节交给子类实现;实现了代码的复用;Demo以常用的listview的adapter举例//把通用操作抽取到抽象父类中public abstract class MyBaseAdapter<T> extends BaseAdapter { Context mContext; List<T> mDatas; LayoutInflate原创 2017-11-29 17:06:25 · 229 阅读 · 0 评论 -
外观模式
外观模式外观模式,为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使子系统更加易用;Demopublic class Stock1 implements IStock { @Override public void buy() { Log.d("meee","买入Stock1"); } @Override public v原创 2017-11-29 17:44:54 · 197 阅读 · 0 评论 -
抽象工厂模式
介绍抽象工厂模式Abstract Factory,提供了一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类;结构图Demo假设我们在打cs的时候需要买枪,而子弹是不通用的,但我们不知道什么武器的对应什么子弹, 理想情况下是在不同的商店直接买到对应的武器和子弹接口//武器接口public interface IGun { void shot(IBullet bullet);}原创 2017-12-01 14:52:54 · 237 阅读 · 0 评论 -
建造者模式
目的是为了解决当构造器所需要的参数过多时,构造器的编写困难构造器的编写原则每多一个构造器就多一个参数public builddemo(int param1){}public builddemo(int param1,int param2){}public builddemo(int param1,int param2,int param3){}但这样编写对构造器的顺序有要求,不能自由选择原创 2017-11-24 11:59:36 · 235 阅读 · 0 评论 -
访问者模式___学习笔记
访问者模式 /** * 访问者模式: * 表示一个作用于某对象结构中的各元素的操作. * 它使你可以在不改变各个元素的前提下定义作用于这些元素的新动作; * * 应用了双分派的技术, * 首先在客户端 man.accpet(具体状态); * 然后"man调用了 具体...原创 2018-04-13 12:17:06 · 358 阅读 · 0 评论