设计模式
Luckie stone
Android应用开发。
展开
-
Android中自带的观察者模式
什么是观察者模式?观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者采用了“注册---通知---撤销注册”的形式 Android中包含了对应观察者模式的两个类:DataSetObserver和DataSetObservable。观察者和被观察者为了避免混淆这两个概念,给他俩取个别名:观察者 = 响应者; 被观...转载 2020-05-07 06:48:38 · 523 阅读 · 0 评论 -
十二、设计模式之外观模式(结构型)
外观模式概述Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。外观模式的角色和职责Facade:为调用方定义简单的调用接口。Clients:调用者。通过Facade接口调用提供某功能的内部类群。Packages:功能提供者。指提供功能的类...转载 2019-06-10 06:42:28 · 102 阅读 · 0 评论 -
十一、设计模式之代理模式(结构型)(重要)
代理模式概述Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。代理模式的结构代理模式的角色与职责subject(抽象主题角色):真实主题与代理主题的共同...转载 2019-06-10 06:42:22 · 94 阅读 · 0 评论 -
九、设计模式之观察者模式(行为型)(重要)
观察者模式概述Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。观察者模式的结构观察者模式的角色和职责Subject(被观察者)被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subj...转载 2019-06-10 06:41:42 · 90 阅读 · 0 评论 -
八、设计模式之策略模式(行为型)
策略模式概述Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。举个例子:假如有两个加密算法,我们分别调用他们,之前我们可以这么写先写一个算法接口public interface Stra...转载 2019-06-10 06:41:36 · 107 阅读 · 0 评论 -
七、设计模式之装饰者模式(创建型)
装饰者模式概述装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。他是23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。为什么要使用装饰模式多用组合,少用继承。利用继...转载 2019-06-10 06:41:29 · 169 阅读 · 0 评论 -
六、设计模式之建造者模式(创建型)
建造者模式概述Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。建造者模式的结构角色在这样的设计模式中,有以下几个角色:builder:为创建一个产品对象的各个部件指定抽象接口。Co...转载 2019-06-10 06:41:22 · 114 阅读 · 0 评论 -
五、设计模式之原型模式(创建型)
原型模式概述原型(Prototype)模式是一种对象创建型模式,他采取复制原型对象的方法来创建对象的实例。使用原型模式创建的实例,具有与原型一样的数据。原型模式的特点由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。目标对象是原型对象的一个克隆。也就是说,通过原型模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。根据对象克隆深度层次的不同,...转载 2019-06-10 06:41:15 · 103 阅读 · 0 评论 -
四、设计模式之单例模式(重要)(创建型)
单例模式概述单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的一个实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。其实,GoF对单例模式的定义是:保证一个类,只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。为什么要用单例模式这是因为在应用系统开发时,我们常常有以下需求:在多个线程之间,比如servlet环境,共享同一个资源或者操作同一...转载 2019-06-10 06:41:02 · 97 阅读 · 0 评论 -
三、设计模式之抽象工厂模式(创建型)
抽象工厂模式概述抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。产品族是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。显然,每一个产品族中含有产品的数目,与产品等级结...转载 2019-06-10 06:40:56 · 124 阅读 · 0 评论 -
二、设计模式之工厂方法模式(重要)(创建型)
工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称为多态工厂模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂,具体工厂,抽象产品,具体产品。工厂方法(FactoryMethod)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推...转载 2019-06-09 09:24:25 · 98 阅读 · 0 评论 -
十三、设计模式之组合模式(结构型)
组合模式概述Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。在《设计模式》一书中给出的定义是:将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。从定义中可以得到使用组合模式的...转载 2019-06-11 06:31:40 · 118 阅读 · 0 评论 -
十四、设计模式之桥接模式(构造型)
桥接模式概述Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。举个例子,我们都知道,汽车有不同的发动机,有油的,有电的,还有用天然气的我...转载 2019-06-11 06:31:48 · 115 阅读 · 0 评论 -
二十三、命令模式(行为型)
命令模式概述Command模式也叫命令模式 ,是行为设计模式的一种。Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。为什么使用命令模式在...转载 2019-06-12 06:29:55 · 197 阅读 · 0 评论 -
二十二、状态模式(行为型)
状态模式概述State模式也叫状态模式,是行为设计模式的一种。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。根据这个概念,我们举个例子public class Behavior { private int time; public int getTime() { return time; }...转载 2019-06-11 06:33:07 · 146 阅读 · 0 评论 -
二十一、备忘录模式(行为型)
备忘录模式概述Memento模式也叫备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式的结构...转载 2019-06-11 06:32:59 · 108 阅读 · 0 评论 -
二十、模板方法模式(行为型)
模板方法模式概述Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。模板方法模式的应用场景Template Method模式一般应用在具有以下条件的应用中:具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各...转载 2019-06-11 06:32:51 · 114 阅读 · 0 评论 -
十九、设计模式之迭代模式(行为型)
迭代模式概述Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。迭代模式使用比较少,JDK集合也提供了Iterator的具体实现,可以直接拿来用,不必自己实现在应用Iterator模式之前,首先应该明白Iterator模式用来解决什么问题。或者说,如果不使用Iterator模式,会存在什...转载 2019-06-11 06:32:43 · 131 阅读 · 0 评论 -
十八、设计模式之职责链模式(行为型)
职责链模式概述Chain of Responsibility(CoR)模式也叫职责链模式、责任链模式或者职责连锁模式,是行为模式之一,该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。职责链模式的应用场景例1:比如客户Client要完成一个任务,这个任务包括a,b,c,d四个部分。首先客户Client把任务交给A,A完...转载 2019-06-11 06:32:34 · 110 阅读 · 0 评论 -
十七、设计模式之中介者模式(行为型)
中介者模式概述Mediator模式也叫中介者模式,是由GoF提出的23种软件设计模式的一种。Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。中介者模式其实就好比租房中介和相亲网站一样,房东将信息发布到租房中介,而租客可以中介挑选自己理想的房子,或...转载 2019-06-11 06:32:16 · 111 阅读 · 0 评论 -
十、设计模式之享元模式(结构型)
享元模式概述lyweight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。 享元模式的角色和职责抽象享元角色:为具体...转载 2019-06-10 06:42:13 · 109 阅读 · 0 评论 -
十六、设计模式之解释器模式(行为型)
解释器模式Interpreter模式也叫解释器模式,是行为模式之一,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。简单地说,Interpreter模式是一种简单的语法解释器构架。解释器模式应用场景当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式。而当存在以下情况时该模式效果最好:1、该文法简单...转载 2019-06-11 06:32:03 · 103 阅读 · 0 评论 -
十五、设计模式之适配器模式(结构型)(重要)
适配器模式概述Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式。举个例子:我们使用电脑,家里的电源是220V的,而我们的电脑是18V的,这时如果我们直接把电源连接电脑,一定会导致电脑被烧坏,因为电源电压太高了,这时我们就需要一个电源适配器,连接在电源与电脑之间,通过适配器进行一个降压,来保证电脑的正常工作。增加适配器用代...转载 2019-06-11 06:31:56 · 106 阅读 · 0 评论 -
一、设计模式之简单工厂模式(重要)(创建型)
一、简单工厂模式(重要)(创建型)简单工厂模式概述简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单来说就是,通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工...转载 2019-06-09 09:24:17 · 120 阅读 · 0 评论 -
java动态代理实现与原理详细分析
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 一、代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代...转载 2018-04-18 15:22:19 · 116 阅读 · 0 评论 -
Java 设计模式情景分析——建造者模式
当我们遇到类似汽车的装配,需要车轮、方向盘、发动机,还有各种小零件时,为了在构建过程中隐藏实现细节,就可以使用建造者模式 (Builder模式) 将部件和组装过程分离,使得构建过程和部件都可以自由扩展,两者之间的耦合也降到最低。接下来我们看一下定义,建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。1.建造者模式的使用情景1)相同的方法,不同的执行顺序,...转载 2018-07-26 06:25:40 · 135 阅读 · 0 评论 -
设计模式——建造者模式解析
0.前言写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦~ 1. 建造者模式介绍建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包括的角色:(1)Builder:给出一个抽...转载 2018-07-26 06:25:50 · 105 阅读 · 0 评论 -
java:从消息机制谈到观察者模式
从简单的例子开始同样,我们还是先看一个简单例子:创建一个窗口实现加法的计算功能。其效果如下: 图1: 加法计算 Calculator.java:import javax.swing.*;import javax.swing.border.BevelBorder;import java.awt.*;import java.awt.event.ActionEvent;...转载 2018-07-21 07:01:43 · 183 阅读 · 0 评论 -
编程思想之消息机制
从一个剧情开始路遥的《平凡的世界》因为翻拍成电视剧,又再次火起来了!我们就从这里开始吧,其小说是以这样一个场景开头的: 在一个半山腰县立高中的大院坝里,在一个校园内的南墙根下,按班级排起了十几个纵队的年轻男女,各班的值日生正忙碌地给众人分发饭菜…… 菜分为甲、乙、丙三等,甲菜以土豆、白菜、粉条为主,还有可人大肉片,乙菜没有肉,丙菜只有清水煮白萝卜。主食也分为三等:白面馍,玉米面馍,高粱面馍,...转载 2018-07-21 07:01:32 · 527 阅读 · 0 评论 -
适配器模式 以手机充电器为例
老样子,定义:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。发现两张图片可以很好的解释适配器模式:这两张图很好的说明了适配器的作用哈,话说我当年买了个欧版的HTC G17 ,还配了个插头转化器,这个插头转化器就是起得适配器的作用。下来来点代码解释哈,如题目,手机充电器一般都是5V左右吧,咱天朝的家用交流电...转载 2018-07-15 09:15:48 · 720 阅读 · 0 评论 -
策略模式 以角色游戏为背景
先来看看策略模式的定义:策略模式(Strategy Pattern):定义了算法族,分别封装起来,让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户。好了,对于定义,肯定不是一眼就能看明白的,不然这篇文章就收尾了,对于定于大家简单扫一眼,知道个大概,然后继续读下面的文章,读完以后再来回味,效果嘎嘣脆。大家应该都玩过武侠角色游戏,下面我就以角色游戏为背景,为大家介绍:假设公司需要做一款武侠...转载 2018-07-15 09:15:41 · 166 阅读 · 0 评论 -
策略模式
策略链模式,也叫政策模式,是一种简单的模式。一.策略模式的现实场景蔡梁如愿成为了一名警察并被分配到了重案组,他刚刚调到重案组就参加了一个重大案件,这次案件需要剿灭一个贩毒团伙。因为这个贩毒团伙非常狡猾,重案组为力确保万无一失,一击即灭整个贩毒团伙,他们针对有可能发生的情况制定了多项计划,最终经过 激烈讨论他们确定了A、B、C三套计划。确定计划后,蔡梁就跟同事一起参加了这次的围剿行动,并且最终将整个...转载 2018-07-13 06:26:49 · 635 阅读 · 0 评论 -
装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。介绍意图:动态地给一个...转载 2018-04-27 17:52:05 · 140 阅读 · 0 评论 -
单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3...转载 2018-04-27 17:18:26 · 106 阅读 · 0 评论 -
观察者模式
观察者模式的定义:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。【观察者模式适用场景】当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。当对一个对象的改变需要同时改变其它对象,而不知道具体有多少个对象待改变。当一个对象必须通知...原创 2018-04-27 17:13:45 · 138 阅读 · 0 评论 -
组合模式
组合模式组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。介绍...转载 2018-07-26 06:25:32 · 98 阅读 · 0 评论 -
工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的...转载 2018-07-26 06:25:23 · 120 阅读 · 0 评论 -
Java动态代理机制
动态代理的应用场景1. AOP—面向切面编程,程序解耦简言之当你想要对一些类的内部的一些方法,在执行前和执行后做一些共同的的操作,而在方法中执行个性化操作的时候--用动态代理。在业务量庞大的时候能够降低代码量,增强可维护性。2. 想要自定义第三方类库中的某些方法我引用了一个第三方类库,但他的一些方法不满足我的需求,我想自己重写一下那几个方法,或在方法前后加一些特殊的操作--用动态代理。但需要注意的...转载 2018-04-18 14:50:17 · 118 阅读 · 0 评论 -
java动态代理--一个简单的例子
1.什么是动态代理代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代...转载 2018-03-20 08:20:27 · 179 阅读 · 0 评论 -
Java代理和动态代理机制分析和应用
概述代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。根据代理类的生成时间不同可以将代理分为静态代理和动态代理两种。代理模式一般涉及到的角色有4种主题接口:定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法;真实主题:真正实现业务逻辑的类;代理类:用来代理和封装真实...转载 2018-03-16 08:43:33 · 165 阅读 · 0 评论