设计模式
文章平均质量分 81
行云间
z大厦大法师打发斯蒂芬
展开
-
设计模式 - 工厂方法模式
1.工厂方法模式介绍工厂方法模式是创建型模式之一,是一种结构简单的模式。是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽原创 2016-03-15 21:32:36 · 613 阅读 · 0 评论 -
设计模式-缺省适配器模式
介绍大家所熟悉的是如果实现某一个接口,必须实现接口中的每一个方法。在适配器模式中,如果目标(Target)角色中的方法众多,需要的仅仅几个。但是根据接口的实现规则,其余的方法也必须实现,这必然造成了很多的不便,最突出的就繁琐。这种情况下,可以考虑实现个默认适配器,然后实际的实现目标角色接口的类可以集成这个默认适配器,然后重写默认实现的方法即可。定义缺省适配模式为一个接口提供缺省实现,这样的类型可以从原创 2016-10-11 21:31:52 · 2620 阅读 · 0 评论 -
设计模式 - 适配器模式
介绍适配器模式在Android开发过程中使用极高,不管ListView、GridView还是RecycleView都需要使用Adapter,在实际开发中涉及到的UI优化,其就占用了很大的比例,真是个让人头疼又喜爱的东西。适配器模式到底是个什么东西呢?适配器模式是将两个互不兼容的类融合在一起,将不同的东西通过一种转换使得他们能够协作起来。定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而原创 2016-10-11 21:30:54 · 686 阅读 · 0 评论 -
设计模式-装饰模式
介绍装饰模式(Decorator Pattern)也称为包装模式(Wrapper),结构模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时也是继承关系的一种替代方案之一。定义动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活。使用场景需要透明且动态地扩展类的功能时。UML类图 角色介绍Component:抽象组件可以是一个接口或者抽象类,其充当的就是原创 2016-10-12 20:50:15 · 599 阅读 · 0 评论 -
设计模式 - 享元模式
介绍享元模式是对对象池的一种实现,它的英文名称叫做Flyweight,代表轻量级的意思,享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样一来就可以提升性能、避免内存移除等。享元对象中的部分状态是可以共享,可以共享的状态成为内部状态,内部状态不会随着环境变化;不可共享的状态称为外部状态,它们会随着环境的改变而改变。在原创 2016-10-13 21:05:12 · 551 阅读 · 0 评论 -
设计模式-外观模式
介绍外观模式(Facade)在开发过程中的运用频率非常高,通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。当然在我们实际开发过程中,外观模式也使我们封装API的常用手段。定义要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式(Facade)提供一个高层次的接口,使得子系统更易于使用使用场景当你要为一个复杂子系统提供原创 2016-10-15 10:45:34 · 576 阅读 · 0 评论 -
设计模式-桥接模式
介绍桥接模式(BridgePattern)也成为桥梁模式,是结构型设计模式之一。定义将抽象部分与实现部分分离,使他们都可以独立进行变化。使用场景如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。 设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之原创 2016-10-15 11:40:52 · 595 阅读 · 0 评论 -
设计模式-单例模式
1.单例模式介绍单例模式是应用最广的模式之一。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多系统只需要拥有一个全局的对象,遮掩更有利于我们协调整体的统一行为。2.单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。3.单例模式的使用场景确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对只应该有且只原创 2016-03-12 20:53:05 · 615 阅读 · 0 评论 -
OO设计原则 — Single Responsibility Principle:单一职责原则(SRP)
• 概要There should never be morethan one reason for a class to change.永远不要让一个类存在一个以上的变更理由。如果一个类存在多个改变它的理由,就说明这个类具有多个职责,有需要重新设计该类的必要。SRP单一职责原则的核心含义:◇ 一个类有且仅有一个职责。◇ 如果一个类需要改变,改变它的理由永远只有一...转载 2018-10-22 10:10:35 · 1169 阅读 · 0 评论 -
OO设计原则 — The Open-Closed Principle:开放/封闭原则(OCP)
对于一个软件的实体(类,模块,函数等)应该是可以扩展的,但是不可被修改。一、概要开放/封闭原则(The Open-Closed Principle:OCP)是在面向对象设计中,类和模块等必须遵循以下规则:◇ 对于功能的扩展因该是开放的,即可以追加机能。◇ 对于修改是封闭的,即既存的机能的实体是不可以修改的。以上两条规则就是说“软件实体应当在不修改的前提下扩展”开放/封闭原则(OCP)...转载 2018-10-22 10:15:50 · 830 阅读 · 0 评论 -
OO设计原则 -- Liskov Substitution Principle: 里氏替换原则(LSP)
概要 Functions that use pointers or references to base classesmust be able to use objects of derived classes without knowing it.所有引用基类的地方必须能透明地使用其子类的对象。 即:◇...转载 2018-10-22 10:23:42 · 649 阅读 · 0 评论 -
OO设计原则 -- Interface Segregation Principle:接口分隔原则(ISP)
概要Clientsshould not be forced to depend upon interfaces that they do not use.不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。它包含了2层意思:- 接口的设计原则:接口的设计应该遵循最小接口原则,不要把用户...转载 2018-10-22 10:27:24 · 571 阅读 · 0 评论 -
OO设计原则 -- Dependency Inversion Principle:依赖倒置原则(DIP)
依赖倒置原则的2个重要方针A. High level modules should not depend upon low level modules. Both shoulddepend upon abstractions.高层模块不应该依赖于低层模块,二者都应该依赖于抽象B. Abstractions should not ...转载 2018-10-22 13:25:43 · 775 阅读 · 0 评论 -
设计模式 - 迭代器模式
概述 迭代器模式(Iterator Pattern)又称为游标(Cursor)模式是行为模式之一。定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不需要暴露该对象的内部表示。使用场景 遍历一个容器对象时。UML类图示例代码创建一个迭代器接口 迭代器接口一般包括hasNext()和next两个方法,hasN原创 2016-08-27 09:42:32 · 744 阅读 · 0 评论 -
设计模式 - 组合模式
概述 组合模式(Composite Pattern)也称为部分整体模式,结构型设计模式之一,组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相对应的对象。】定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。使用场景表示对象的部分-整体层次结构从一整体中能够原创 2016-08-31 20:45:26 · 658 阅读 · 0 评论 -
设计模式 - 代理模式
概述 代理模式(Proxy Pattern)也称为委托模式。代理模式在生活中经常见,比如访问国外网站时,连上代理服务器,就可以轻松畅游全世界的网络。既然代理模式这么普遍,我们有必要了解下代理模式如何做到的?定义 为其他对象提供一种代理以控制对这个对象的访问。使用场景 当无法或不想访问某个对象或访问某个对象困难的时,可以通过一个代理对象来间接访问,为了保证客户端使用原创 2016-08-31 19:35:53 · 1790 阅读 · 1 评论 -
设计模式-责任链模式
1.责任链模式介绍责任链模式,是行为型模式之一。我们将多个节点首尾相连所构成的模型称为链。对于链式结构,每个节点都可以被拆开再链接,因此链式结构也具有很好的灵活性。将这样一种结构应用于编程领域,将每一个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端出发,沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,我们将这样一种模式称为责任链模式。2.责任原创 2016-03-30 20:59:49 · 595 阅读 · 0 评论 -
设计模式-抽象工厂模式
1.抽象工厂模式介绍抽象工厂模式,也是创建型模式之一。2.抽象工厂模式的定义为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定它们的具体类3.抽象工厂的使用场景(1) 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。(2) 这个系统有多于一个的产品族,而系统只消费其中某一产品族。(3) 同属于同一个产品族的原创 2016-03-21 20:15:44 · 597 阅读 · 0 评论 -
设计模式-Builder模式
1.Builder模式介绍Bulder模式是一步步创建一个复杂对象的创建模型,它允许用户在不知道内部构建细节的情况下可以更精细地控制对象的构造流程该模式为将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。2.Builder模式的定义将一个负责对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示3.Builder模式的使用场景3.1原创 2016-03-12 21:19:28 · 1244 阅读 · 0 评论 -
设计模式-原型模式
1.原型模式的介绍原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板的实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可以定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下 ,复制一个已经存在的实例可使程序运行的更高效。2.原型模式的定义用原型实例指定创建对象的种类,原创 2016-03-14 21:30:02 · 709 阅读 · 0 评论 -
设计模式-策略模式
1.策略模式介绍在软件开发过程中经常遇见这样的问题:实现某一个功能可以有多种算法或者策略,我们根据实际情况选择不同的算法或者策略来完成此功能。例如,排序算法,可以使用插入排序、归并排序、冒泡排序等。如果将这些算法或者策略抽象出来,提供一个统一的接口不同的算法或者策略有不同的实现类,这样程序客户端就可以通过注入不同的实现对象来实现算法或者策略的动态替换,这种模式的可扩展性、可维护性也就很高。原创 2016-03-28 21:13:33 · 663 阅读 · 0 评论 -
设计模式-状态模式
1.状态模式介绍状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。状态模式和策略模式的结构几乎完全一样,但它们的目的、本质却完全不一样 。状态模式的行为是平行的、不可替换的,策略模式的行为是彼此独立、可相互替换的。状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象基类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。2.状态模式的原创 2016-03-29 20:40:33 · 600 阅读 · 0 评论 -
设计模式-观察者模式
1.观察者模式介绍 观察者模式是一个使用频率非常高的模式,它最常用的是GUI系统、订阅-发布系统。因为这个模式的重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。2.观察者模式的定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。3.观察者模式的使用场景 1.原创 2016-04-24 20:53:35 · 929 阅读 · 0 评论 -
设计模式 - 模版方法模式
概要 在开发过程中,通常会遇到这样的问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变的。例如在创建Activity时,执行findView()、initData()、initUI()、setLisenter(),对于不同的Activity,上述步骤的执行结果是不一样的,但是执行流程是可以固定的原创 2016-08-27 16:27:37 · 706 阅读 · 0 评论 -
设计模式 - 访问者模式
概要 访问者模式是一种将数据操作和数据结构分离的设计模式。 访问者模式的基本思想是 软件系统中有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥有accept方法用来接受访问者对象的访问。访问者是一个接口或者抽象类,它拥有一个visit方法,这个方法访问到的对象结构中,不同的元素做出不同的处理。在对象结构的一次访问过程中,我们遍历整个对象结构,对每一个元素都原创 2016-08-27 18:41:58 · 789 阅读 · 0 评论 -
设计模式-命令模式
命令模式介绍 命令模式(Command Pattern),是行为模式之一。命令模式相对于其他设计模式,没有严格的条框,从而显得灵活多变。在实际生活中,我们碰到很多命令模式,比如手机的中有菜单命令,在点击“关机”命令后,系统会执行一系列的操作,如暂停处理的操作,保存相应的系统设置,关闭掉打开的程序等。对于这一系列的操作,用户不用管,系统会自动执行。命令模式就是如此一辙,将一系列的方原创 2016-08-18 21:32:24 · 621 阅读 · 0 评论 -
设计模式 - 中介者模式
概述 中介者模式(Mediator Pattern)也称为调解者模式或者调停者模式。定义 中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而是它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对对象的行为和协作抽象化。原创 2016-08-30 21:46:07 · 471 阅读 · 0 评论 -
设计模式-备忘录模式
概述 备忘录模式是一种行为模式,该模式业内关于保存对象当前状态,并且之后可以再次恢复到此状态。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。定义 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。使用场景需要保存一个对原创 2016-08-21 18:14:44 · 657 阅读 · 0 评论 -
OO设计原则 -- OO设计的原则及设计过程的全面总结
前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结,单一职责原则(SRP)开放/封闭原则(OCP)里氏替换原则(LSP)接口分隔原则(ISP)依赖倒置原则(DIP)这是我通过阅读和学习很多博文和资料后进行的一个梳理和总结,仅供大家来参考。一.OO(面向对象)的设计基础面向...转载 2018-10-22 13:33:01 · 554 阅读 · 0 评论