
设计模式
文章平均质量分 95
一枚-狗子
这个作者很懒,什么都没留下…
展开
-
行为型设计模式-命令模式
1 命令模式概念1.1 介绍 将一个请求封装成对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式可以将调用操作的对象和知道如何实现该操作的对象解耦。同时命令模式是面向过程变成中回调机制的一个替代。1.2 定义 命令模式是一个高内聚的模式,其定义为将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提原创 2017-05-21 17:07:55 · 445 阅读 · 0 评论 -
结构型设计模式之代理模式
1 代理模式概念1.1 介绍 代理模式(Proxy Pattern)是面向对象中一种非常常见的设计模式。其实,不单是在软件开发领域,在我们的日常生活中对于代理也时常可见。比如:房东要将自家的房租出售,于是到房地产中介公司找一个代理,由他来帮自己完成销售房屋,签订合同等等事宜。在此,就以该生活场景为蓝本介绍Java的代理模式。一般而言,代理技术可分为:静态代理和动态代理;我们先来看静态代理。1.2转载 2017-12-14 21:22:18 · 282 阅读 · 1 评论 -
行为型设计模式-迭代器模式
1 迭代器模式概念1.1 介绍 迭代器模式,又叫做游标模式,是行为型设计模式之一。我们知道对容器对象的访问必然会涉及遍历算法,我们可以将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决问题。 然而在前一种情况,容器承受了过多的功能,它不仅要负责自己“容器”内的元素维护(添加、删除等等),而且还要提供遍历自身的接口;而且由于遍历状态保存的问题,原创 2017-06-20 00:13:02 · 496 阅读 · 0 评论 -
设计模式之单例模式
1 单例模式简介1.1 介绍 单例模式应该是日常使用最为广泛的一种模式了。他的作用是确保某个类只有一个实例,避免产生多个对象消耗过多的资源。比如对数据库的操作时;在一个应用中只有一个ImageLoader实例,这个ImageLoader又含有线程池、缓存系统、网络请求等,很消耗资源,就可以使用单例模式。1.2 单例模式定义 确保某一个类只有一个实例,而且自行实例化并向整...原创 2017-04-05 00:19:25 · 3490 阅读 · 0 评论 -
设计模式之基础-UML
1 UML类图在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Composition), 依赖(Dependency)1.1 泛化关系(Generalization)【泛化关系】:是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有特征和行原创 2017-03-21 23:53:35 · 720 阅读 · 0 评论 -
创建型设计模式之Builder模式
1 Builder模式概念1.1 介绍 Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。 Builder模式,在于分工明确,一个抽象建造者,一个具体的建造者,一个指挥者,当然还需要具体的产品。那么我们以一个软件产品为...原创 2017-04-30 11:28:05 · 8864 阅读 · 3 评论 -
面向对象的六大原则
1 单一职责原则1.1 定义 单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。SRP的原话解释是:There should never be more than one reason for a class to change。 单一职责原则的定义是:应该有且仅有一个原因引起类的变更。简单的说就是:一个类中应该是一组相关性很高的函数、数据原创 2017-07-04 23:21:02 · 1607 阅读 · 1 评论 -
随遇而安-状态模式
1状态模式概念1.1 介绍 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。1.2 定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为。当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。1.3 使用场景(1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态改原创 2017-06-07 00:03:40 · 450 阅读 · 0 评论 -
行为型的设计模式-策略模式
1 状态模式概念1.1 介绍 通常如果一个问题有多个解决方案时,最简单的就是利用if-else或者switch-case方式根据不同的情景选择不同的解决方案,但是这样耦合性太高 、代码臃肿、难以维护等。 如果将这些算法或者策略抽象出来,提供一个统一的接口,不同的算法或者策略有不同的实现类,这样在程序客户端就可以通过注入不同的实现对象来实现算法或者策略的动态替换,这种模式的可扩展性、可维护性也原创 2017-06-17 15:55:02 · 519 阅读 · 0 评论 -
行为型设计模式-模板方法模式
1 模板方法概念1.1 介绍 模板方法模式是结构最简单的行为型设计模式,也是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。在其结构中只存在父类与子类之间的继承关系。1.2 定义 定义一个操作中的算法的架构,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。1.3 使用场景(1)多个子类有公有的方法,并且逻辑基本相同。 (2)重要、复杂原创 2017-05-28 12:39:37 · 542 阅读 · 0 评论 -
行为型设计模式-责任链模式
1 责任链模式概念1.1 介绍 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。这样就实现了请求者和接受者之间的解耦,并且在客户端可以实现动态的组合职责链。使编程更有灵活性。其过程实际上是一个递归调用。1.2 定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为原创 2017-05-09 00:03:00 · 4002 阅读 · 0 评论 -
行为型设计模式-解释器模式
1 命令模式概念1.1 介绍 解释器模式是一种用的比较少的行为型模式,其提供了一种解释语言的语法或表达式的方式。但是它的使用场景确实很广泛,只是因为我们自己很少回去构造一个语言的文法,所以使用较少。1.2 定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。(其中语言就是我们需要解释的对象,文法就是这个语言的规律,解释器就是翻译机,通过文法来翻译语原创 2017-05-23 00:22:39 · 597 阅读 · 0 评论 -
设计模式之简单工厂模式和工厂方法模式
1 工厂方法模式的定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。1.1 工厂方法模式的通用类图图1 工厂方法模式通用类图在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的。1.2 工厂方法模式的实用通原创 2017-03-25 23:43:12 · 937 阅读 · 0 评论 -
创建型设计模式之抽象工厂方法模式
1 抽象工厂方法模式概念1.1 介绍 随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B型号空调和B型号发动机。 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。比如宝马320系列使用空调型号A和发原创 2017-04-17 23:55:40 · 804 阅读 · 0 评论 -
设计模式之原型模式
1 原型模式概念1.1 介绍 原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。1.2 定义 用原型实例指定创建对象的种类,并通过拷贝这些原型原创 2017-04-09 17:49:38 · 8596 阅读 · 8 评论 -
触发联动-解决解耦的钥匙-观察者模式
1 观察者模式概念1.1 介绍 观察者模式是一个使用率非常高的模式,它最常用在GUI系统、订阅–发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。比如Android的开源项目EventBus、Otto、AndroidEventBus等事件总线类的和RxJava响应式编程其核心都是使用观察者模式。1.2 定义原创 2017-05-29 15:52:10 · 714 阅读 · 0 评论