设计模式
忆蝶梦寒&
晓看天色暮看云,行也思君,坐也思君。
春看百花冬看雪,醒亦念卿,梦亦念卿。
展开
-
java 设计模式学习前篇--设计模式理解
还是习惯性的根据问题来了解设计模式。这样可以更深入的理解设计模式,自己写代码的时候也会注意到,研究其他框架的时候也会留意别人怎么应用设计模式的。1. 什么是设计模式? 设计模式是一套被反复使用,多数人知晓,经过分类编目的代码设计经验的总结。也就是说设计模式不是技术,而是实践中经验的总结。 2. 为什么要使用设计模式? 使用设计模式是为了提高代码的复用性,让代码更易读,保证代码的可靠性,一原创 2017-12-21 14:58:01 · 225 阅读 · 0 评论 -
java设计模式(十二)---状态模式
一、状态模式定义: 允许对象在内部状态改变时,改变它的行为。对象看起来好像修改了他的类。 二、状态模式涉及角色: Context: 环境角色,也称上下问,定义客户所感兴趣的接口,并且保留一个具体状态类的实例,这个具体状态类的实例给出此环境对象的现有状态。 State: 抽象状态角色,定义一个接口,用以封装环境对象的一个特定状态所对应的行为 ConcreteState: 具体状态角色原创 2018-01-06 15:01:44 · 215 阅读 · 0 评论 -
java设计模式(十一)---迭代器模式
关于迭代器模式,除了自己用java自带的,来循环map或者set其他的基本用不到。 一、迭代器定义: 提供一种方法顺序访问一个聚合对象的各个元素,而又不暴漏起内部的表示 二、迭代器涉及的角色: 1.迭代器角色: 定义遍历元素所需的方法,一般来说会有这么三个方法,取得下一个元素的方法next(),判断是否遍历结束的方法hasNext(),移除当前对象的方法。 2.具体迭代器角色: 实现原创 2018-01-06 10:14:23 · 169 阅读 · 0 评论 -
java设计模式(十)---外观模式
一、外观模式定义: 提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。 二、外观模式涉及的角色: 门面角色: 客户可以通过调用该角色的方法,这个方法负责执行一个或者多个子系统的方法,正常情况下客户端发来的请求都会委派到子系统中去。 子系统角色: 可以拥有一个或者多个子系统,每个子系统都不是单独的一个类,而是一个集合,负责实现某种功能,对于客户原创 2018-01-05 14:12:55 · 224 阅读 · 0 评论 -
java设计模式(七)---策略模式
策略模式是平常我们应用最广泛的但是又没有总结的一个模式,spring加载类就是典型的策略模式,还有我们的代码分层,也就策略模式的实现 一、策略模式的定义: 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 二、涉及的角色: 1.抽象策略角色: 将需要使用的算法或者业务抽象为接口 2.具体策略角色: 具体的算法与业务实现 3.策略使用原创 2017-12-29 10:05:01 · 180 阅读 · 0 评论 -
java设计模式(九)---模版方法模式
一、模板方法模式定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤 二、模板模式涉及的角色: 1.抽象类: 实现了模板的方法,定义了算法的骨架。 2.具体实现类: 实现了抽象类的抽象方法,以完成完整的算法 三、模板方法的优缺点: 优点: 模板方法牧师通过吧不变的行为搬移到超类,去除了子类的重复代原创 2018-01-04 17:32:19 · 173 阅读 · 0 评论 -
java设计模式(五)---适配器模式
适配器模式主要是用于接口不兼容但是有不至于系统重构,这个时候就可以通过适配器来使接口兼容。项目中也会经常用到,面试偶尔会问到。 一、适配器模式的定义: 适配器模式是将一个类的接口转换成成客户期望的另一个接口,适配器让原来的接口不兼容的类可以合作无间。现实中我们也经常用到各种适配器(也就是转换器,电压转换器,买港版苹果的需要一个插头转换器,等等) 二、适配器模式涉及的角色: 为了便于理解,整原创 2017-12-27 14:30:52 · 238 阅读 · 0 评论 -
java设计模式(八)---组合模式
一、组合模式的定义: 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构,组合让客户以一致的方式处理个别对象以及对象组合 二、涉及角色: 1.Component: 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为,声明一个接口,用于访问和管理Component子类。 2.Leaf: 在组合汇总表示叶子节点对象,叶子节点没有子节点 3.Composite:原创 2018-01-04 10:37:30 · 167 阅读 · 0 评论 -
java设计模式(六)---命令模式
看到命令模式的解释及相关的例子,除了经常用到的开关来解释,那就是Struts2的模式了,truts2对请求的处理 就是典型的命令模式一、命令模式的定义: 将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也可以支持撤销操作。 二、命令模式设计的角色: 1.command:抽象命令类 为所有的命令声明一个接口,调用命令对象的执行方法,就可以让接收者进行相关的动作,原创 2017-12-28 14:48:32 · 207 阅读 · 0 评论 -
java设计模式(四)---观察者模式
一、观察者模式定义: 定义了对象间一对多的组合关系,以便一个对象状态发生变化时,所有依赖于它的对象都得到通知,并自动刷新。简单点理解就是广播模式,一个对象发生了变化,通知所有依赖于它的对象,也做相应的调整,现在比较流行的zookeeper就是这种模式,还有我们平常订阅报纸,在工作平台找工作都有类似的模式。 二、观察者模式使用的场景: 1.一个对象的更新,需要其他对象同步更新,而且其他对象的数量原创 2017-12-26 11:07:59 · 295 阅读 · 0 评论 -
java设计模式(八)---代理模式
之前看到别人框架的代码时总是看到各种代理,也是一脸的懵逼,所以代理模式是平常项目中很少用到但是底层代码有经常用到的,还是有必要深入了解一下的 一、代理模式的定义 代理模式为另外一个对象提供一个替身或者占位符,以控制对这个对象的访问,现实中比较类似的例子就是助理秘书跟老总的关系,或者明星跟经纪人的关系。 二、代理模式涉及的角色 1.抽象主题角色 定义了被代理角色和代理角色的共同接口或者抽象类原创 2017-12-30 21:05:58 · 198 阅读 · 0 评论 -
java设计模式(三)---单例模式
一、单例模式的基本定义: 一个类有且仅有一个实例,并且提供了一个全局的访问点 二、单例模式适用场景:需要频繁的实例化然后销毁对象创建对象时耗时或者消耗资源过多,但又经常用到的对象有状态的工具对象频繁访问数据库或者文件的对象资源共享情况下,避免资源操作时导致性能损耗控制资源的情况下,方便资源之间的互相通信,如线程池 三、单例模式的特点: 1.只能有一个实例 2.单例必须是自己来创原创 2017-12-25 10:21:20 · 163 阅读 · 0 评论 -
java设计模式(二)---抽象工厂模式
1.抽象工厂模式的定义为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定对应的具体类。抽象工厂模式与工厂方法模式最大的区别就是抽象工厂中每个工厂可以创建多个种类的产品。2.抽象工厂模式的适用范围一个系统不应当依赖产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的,这个系统有多于一个产品族,而系统只消费其中某一种产品族,同属于同一产品族的产品是在一起使用,这一约束是必须原创 2017-12-23 10:55:22 · 427 阅读 · 0 评论 -
java设计模式(一)---工厂方法模式
基本上有兴趣了解设计模式的都会知道工厂模式,因为各种模式相关的书籍以及博客什么的都是以工厂模式开头的,对于一时兴起或者三天热度的都是会看到工厂模式,但是工厂模式也是用到比较广泛的模式,属于创建型模式。工厂模式分为工厂方法模式和抽象工厂模式,这篇主要总结一下工厂方法模式,而工厂方法模式有细分为:简单工厂模式、工厂方法模式。还是分开了解一下 既然是工厂模式,为了自己加深理解,例子还是用工厂可以造出来的原创 2019-04-14 00:06:46 · 24028 阅读 · 2 评论 -
java设计模式(十三)---装饰者模式
一、装饰者模式定义: 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 二、装饰者模式涉及的角色: 1.抽象组件: 定义一个抽象接口,来规范准备附加功能的类。 2.具体抽象组件: 将要被附加功能的类,实现抽象组件角色的接口 3.抽象装饰者: 持有具体组件角色的引用,并定义与抽象组件角色一致的接口。 4.具体装饰: 实现抽象装饰者角色,负责对具体组件原创 2018-01-09 16:33:52 · 210 阅读 · 0 评论