设计模式
LoveWyf_
本人学识渊博 经验丰富,代码风骚、效率恐怖,c/c++、java、php无不精通,熟练掌握各种框架,深山苦练20余年,一天只睡4小时,千里之外定位问题,瞬息之间修复上线。可连续编程100小时不休息!学校不支持编程已辍学,家人不支持编程已断绝关系,老婆不支持编程已离婚!
展开
-
<设计模式一>普通工厂模式
设计模式是JAVA进阶中必备的技能,接下来就为大家介绍23中设计模式的基本用法。首先为大家介绍工厂模式的使用。工厂模式适用于大量的对象需要创建,并且具有共同的接口时。在Android中,BitmapFactory是我们用到最多的工厂模式,它的各种方法都是返回Btimap类型。工厂模式分为三种:1、普通工厂模式2、多个方法工厂模式3、静态工厂模式举例:原创 2016-07-23 10:53:52 · 410 阅读 · 0 评论 -
<设计模式15>模板方法模式
模板方法模式是经常使用的设计模式之一,其思想就是通过一个抽象类,即模板,来架构出大致的算法、操作的框架,而具体的方法则交给子类实现,这样,我们只需要实现子类,而整体的逻辑架构不需要我们去实现,即可使用。下面给出一个简单的模板。AbstractTemplate:即模板方法public abstract class AbstractTemplate { public void o原创 2016-09-18 22:49:51 · 604 阅读 · 0 评论 -
<设计模式12>组合模式
组合模式其实是一个很形象的模式。它也被称为部分整体模式。组合模式的结构就如同树状图一样。而树就是枝干、叶子的组合,组合模式可以形象的这么理解。其实文件夹是一个很好的组合模式的体现。一个文件夹(树根root)下可能有多个文件夹(枝干Trunk),可能是单个的文件(树叶leaf)。而枝干是可以继续向下延伸的,树叶则是树枝的端点,不能继续延伸。文件夹和文件也是如此。同样如此,公司的结原创 2016-09-06 20:51:26 · 652 阅读 · 0 评论 -
<设计模式13>享元模式
享元模式是一个比较好理解的模式,简单而言,就是共享元素的意思。那共享元素有什么用?通常这个模式是与工厂模式一起使用。我们知道工厂模式是用于创建对象的,没调用一次就会返回一个对象。如果我们过多的调用呢?每次返回一个新的对象会导致内存占用很多。有时候我们并不需要一个新的对象,只要获得之前所创建的对象。这样就可以节省很多内存。而享元模式就是这个作用:实现对象的共享,避免对象的过多创建。下面用原创 2016-09-08 19:27:00 · 881 阅读 · 2 评论 -
<设计模式18>命令模式
命令模式(Command Pattern):将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,已经支持可撤销的操作。角色介绍:Receiver:接收者角色,负责具体执行一个请求,其实就是一个命令的真正执行者。Command:命令,抽象接口ConcreteCommand:一个命令的具体实现。该类中通过传入一个Receiver来把原创 2016-10-10 22:52:40 · 927 阅读 · 0 评论 -
<设计模式16>迭代器模式
关于迭代器,大家都应该用Iterator这个类。当我们想要遍历集合的时候,我们就会通过迭代器来对集合进行遍历。而迭代器模式的作用便是方便使用者来对一个容器进行遍历。当我们对容器对象访问的时候,必定要通过遍历来获取对象,如果我们将遍历的方法封装在容器中,这样就会使容器承担过多的功能,如果我们不提供遍历的方法,让使用者自己实现,那么就会让内部的细节被暴露出来,因此,迭代器模式便由此产生。下原创 2016-09-21 23:19:49 · 1355 阅读 · 0 评论 -
<设计模式17>责任链模式
责任链模式(Chain of Responsibility)责任链模式就如通一个锁链一样,一个节点连着一个节点,每个节点就是一个对象,有着不同的处理逻辑。使用场景:多个对象可以处理同一个请求,但具体由哪个处理则在运行时动态决定。动态的指定一组对象,来按照顺序来链式般的按顺序处理请求。处理方法的接口IHandler:public interface IHand原创 2016-09-27 23:32:48 · 322 阅读 · 0 评论 -
<设计模式19>备忘录模式
备忘录(Memento)模式是是一种行为模式,常用来保存一种状态。当状态被修改的时候,可以通过备忘录模式来恢复状态,就好比打游戏一样,我们可以进行保存记录,保存后我们可以随时调取记录来恢复到以前的数据。角色介绍:Originator:源数据,里面是需要保存的数据值,在这里可以创建备忘录,备份和回复数据。Memento:备忘录类,用于存储Originator的数据状态。Caretak原创 2016-10-15 22:51:59 · 534 阅读 · 0 评论 -
<设计模式21>访问者模式
访问模式是一种将数据操作与数据结构分离的设计模式。它是23种设计模式中最复杂的一个,但是使用频率不高。它是封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下,定义于这些元素的新的操作。使用场景:1、对象结构比较稳定,但经常需要在此对象结构上定义新的操作。2、需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染这些对象的类原创 2016-11-08 00:26:32 · 284 阅读 · 0 评论 -
<设计模式8>代理模式
代理是我们常常听到的词,无论是网络代理还是现实生活中的校园代理之类的词。什么是代理?网络代理,我们可以通过代理来间接访问一些不能访问的网站;校园代理,我们通过其购买一些厂商提供的东西、等等等。而代理模式就是类似于这种作用的一种模式。通过代理模式来对一些对象的方法进行控制、额外操作。下面展示一个代理的例子:方法接口:public interface IInternet { pu原创 2016-08-13 14:39:30 · 524 阅读 · 0 评论 -
<设计模式14>策略模式
策略模式通常是对算法的一些封装。通常当一个问题有多个解决方案的时候,我们会通过if-else来对每个方法进行区分,通过传入的参数来确定具体使用某个方法。但是这样做的话耦合性太高,如果条件很多的时候,if-else就会很复杂。当我们需要进行增加或者减少的时候,就需要对代码的逻辑进行更改。这样就违反了开闭原则。而策略模式,就能很好的解决这种问题,将各种方案分离开来。策略模式中的各个原创 2016-09-12 22:18:08 · 702 阅读 · 0 评论 -
<设计模式11>桥接模式
桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。“桥接”的作用就是连接“抽象”与“实现”部分,如果一个系统需要在构建的抽象化角色和具体角色之前增加更多的灵活性,而不是静态的直接继承实现,则可以考虑桥接模式。我们以球鞋为例,生活中有很多的球鞋,白色、黑色;篮球鞋、足球鞋;阿迪达斯、nike,等等,他们不同,但是都却有原创 2016-08-31 22:35:57 · 470 阅读 · 0 评论 -
<设计模式3>单例模式
这个就不用多作介绍了。平常项目过程中用的也很多,也是最常见的设计模式之一。顾名思义,主要功能便是每次调用方法获得的都是同一个对象,而不是重新创建。下面列举几个常见的方法。方法一:最简单,最不安全public class Singleton { private static Singleton singleton; /** *私有构造方法,防止被实例化 */ priva原创 2016-07-23 15:15:22 · 244 阅读 · 0 评论 -
<设计模式4>建造者模式
这篇要介绍的是Builder模式。说道Builder大家一定很熟悉,Android中的AlertDialog便是用的该模式。 Dialog alertDialog = new AlertDialog.Builder(this). setTitle("对话框的标题"). setMessage("对话框的内容").原创 2016-07-25 17:42:12 · 451 阅读 · 0 评论 -
<设计模式5>原型模式
在JAVA中,我们有时候需要获得对一个对象操作,但是我们又不想破坏这个对象的数据,因此我们会调用clone()方法,获得一个数据一样的对象进行改写,而这样的方法便是原型模式。要调用clone()方法只需要实现Cloneable接口就可以。原创 2016-07-27 11:21:08 · 438 阅读 · 0 评论 -
<设计模式6>适配器模式
适配器在我们生活中其实很常见,顾名思义,就是让原本不适配的东西通过适配器达到适配的效果。这也就是适配器模式的意义。原创 2016-07-29 15:21:29 · 233 阅读 · 0 评论 -
<设计模式7>装饰模式
装饰模式是为了动态的添加一些功能,要求装饰对象和被装饰对象要实现同一个接口。下面就举一个简单的例子。我比较喜欢玩dota,现在就以dota来进行举例。首先我们写一个接口:public interface IRole { public String describe();}实现这个接口用于对游戏人物进行具体描述:public class RoleDecorator原创 2016-08-06 09:27:07 · 329 阅读 · 0 评论 -
<设计模式9>观察者模式
观察者模式是经常使用的设计模式。正如“观察之意”,这个模式的作用就是观察某个对象是否改变,如果改变,则与它相关的对象也都发送相应的改变,从而达到联动效果。这个模式涉及到的对象主要也是两个:观察者对象、被观察的对象。示例:两个接口:一个观察者接口、一个被观察者接口(也就是观察目标)/** * 观察者对象 * @author xiaoqi * */public inter原创 2016-08-15 23:57:11 · 281 阅读 · 0 评论 -
<设计模式10>外观模式
没有看到外观模式的具体实现可能大家对外观模式没有了解。但是事实上,外观模式在我们平常项目中都用的很多,只是我们并不知道它其实是属于外观模式中的一种。应用场景:有时候我们需要实现几个不同的功能,这几个功能又事相互独立开的。此时我们想要去对他们进行操作每次都需要操作其本身对象,这样很麻烦。就好比,我们在看电视的时候需要开关按钮、调节频道的按钮、音量按钮。此时,如果我们没有遥控器,我们每次去操作原创 2016-08-18 16:12:26 · 592 阅读 · 0 评论 -
<设计模式2>抽象工厂模式
抽象工厂模式,顾名思义,也是工厂模式中的一种。与之前不同的是,它多了一个接口,所有的工厂类继承这个接口来进行具体操作,显而易见,这样扩展性更好,修改的时候不需要修改之前的代码,重新创建即可。方法也和之前的差不多,这里先贴出与之前相同的部分:public interface IOperator { public void operate();}public class O原创 2016-07-23 14:39:19 · 712 阅读 · 0 评论 -
<设计模式20>状态模式
状态模式的作用是通过一种状态,来确定一种行为。状态模式和策略模式结构很相似,但它们的目的、本质却完全不一样。状态模式的行为是平行的、不可替换的,策略模式的行为是彼此独立、可项目替换的。角色介绍Context:环境类,定义一个接口,用于维护一个State子例。 State:定义一个或者一组接口,用于定义该状态下的行为。 ConcreteState:具体的状态实现。简单实例一个电视遥控器类,如果没有原创 2016-10-30 23:53:16 · 509 阅读 · 0 评论