Java编程23种设计模式实战篇
文章平均质量分 74
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
beyondwild
愿你眸有星辰,心有山河,以梦为马,不负韶华!
展开
-
Java编程23种设计模式实战篇26:Java设计模式_(创建型)_抽象工厂模式
引用百科:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。抽象工厂模式与..原创 2020-08-10 08:22:57 · 224 阅读 · 0 评论 -
Java编程23种设计模式实战篇25:Java设计模式_(创建型)_工厂模式
引用百科: 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的。但是如果有很多的对象需要去new创建,并且设置各种属性,几十几百,如此代码就非常纠结了,于是乎工厂模式就出现了,称为工厂模式其实就是如同现实中的工厂一样,将需要做的事集中起...原创 2020-08-10 08:22:46 · 255 阅读 · 0 评论 -
Java编程23种设计模式实战篇24:Java设计模式_(创建型)_单例模式
1概述单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例.数学与逻辑学中,singleton定义为“有且仅有一个元素的集合”。单例模式最初的定义出现于《设计模式》(艾迪生维斯理,1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”2实现方式2.1 ...原创 2020-08-10 08:22:36 · 200 阅读 · 0 评论 -
Java编程23种设计模式实战篇23:Java设计模式_描述
概述:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工..原创 2020-08-10 08:22:14 · 251 阅读 · 0 评论 -
Java编程23种设计模式实战篇22:Java设计模式_(创建型)_原型模式
引用百科:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。解决什么问题:它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。如.原创 2020-08-10 08:21:59 · 160 阅读 · 0 评论 -
Java编程23种设计模式实战篇21:Java设计模式_(创建型)_建造者模式
引用百科 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同表示时。角色在这样的设计模式中,有以下几个角色:1 builder:为创建一个产品对象的各个部件指定抽象接口。2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。3 D...原创 2020-08-09 09:26:51 · 160 阅读 · 0 评论 -
Java编程23种设计模式实战篇20:Java设计模式_(结构型)_适配器模式
引用百科在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。基本信息共有两类适配器模式:类适配器模式-- 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。模式所涉及的角色有: ● 目标(T..原创 2020-08-09 09:26:42 · 189 阅读 · 0 评论 -
Java编程23种设计模式实战篇18:Java设计模式_(结构型)_外观模式
引用百科外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。Facade这个外观类为子系统提供一个共同的对外接口Clients客户对象通过一个外观接口读写子系统中各接口的数据资源。适用场景在以下情况下可以考虑使用外观模式:(1)设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。(2) 开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。(3) 维护一个大型遗留系统..原创 2020-08-09 09:26:25 · 189 阅读 · 0 评论 -
Java编程23种设计模式实战篇17:Java设计模式_(结构型)_桥接模式
引用百科桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。适用性:1)如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之.原创 2020-08-09 09:26:18 · 234 阅读 · 0 评论 -
Java编程23种设计模式实战篇16:Java设计模式_(结构型)_代理模式
引用百科即Proxy Pattern,23种常用的面向对象软件的设计模式之一。代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调.原创 2020-08-09 09:26:06 · 139 阅读 · 0 评论 -
Java编程23种设计模式实战篇15:Java设计模式_(结构型)_装饰模式
引用百科装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。特点(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结..原创 2020-08-09 09:25:54 · 189 阅读 · 0 评论 -
Java编程23种设计模式实战篇14:Java设计模式_(结构型)_享元模式
引用百科享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。两个状态 享元模式包含内蕴状态和外蕴状态:内蕴状态存储在享元内部,不会随环境的改变而有所不同,是可以共享的外蕴状态是不可以共享的,它随环境...原创 2020-08-09 09:25:46 · 170 阅读 · 0 评论 -
Java编程23种设计模式实战篇13:Java设计模式_(行为型)_责任链模式
引用百科责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。责任链模式涉及到的角色:● 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。抽象方法.原创 2020-08-09 09:25:36 · 160 阅读 · 0 评论 -
Java编程23种设计模式实战篇12:Java设计模式_(行为型)_命令模式
引用百科在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)模式说明1.命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。2.每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求.原创 2020-08-09 09:25:26 · 164 阅读 · 0 评论 -
Java编程23种设计模式实战篇11:Java设计模式_(行为型)_迭代模式
引用百科迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。适用性访问一个聚合对象的内容而无需暴露它的内部表示支持对聚合对象的多种遍历为遍历不同的聚合结构提供一个统一的接口迭代子模式涉及的角色:● 抽象迭代子(Iterator)角色:此抽象角色定义出遍历元素所需的接口。 ● 具体迭代子(RealIterator)角色:此角色实现了Iterator接口,并保持迭代过程中的游标位置。● 聚集(Aggregate)角色...原创 2020-08-08 09:59:44 · 196 阅读 · 0 评论 -
Java编程23种设计模式实战篇10:Java设计模式_(行为型)_中介者模式
引用百科用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使得其耦合松散,而且可以独立地改变它们之间地交互,从相互引用网状结构变成以中介者为中心地星型结构。相关角色抽象中介者(Mediator):定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现。中介者实现类(RealMediator):从抽象中介者继承而来,实现抽象中介者中定义的事件方法。从一个同事类接收消息,然后通过消息影响其他同时类。同事类(.原创 2020-08-08 09:57:19 · 173 阅读 · 0 评论 -
Java编程23种设计模式实战篇9:Java设计模式_(行为型)_备忘录模式
引用百科备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。相关角色1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自己的哪些内部状态。2.Memento(备忘录):负责存储Originator对象的内部状态,并可以防止Originator以外的其他对象访问备.原创 2020-08-08 09:55:10 · 166 阅读 · 0 评论 -
Java编程23种设计模式实战篇8:Java设计模式_(行为型)_观察者模式
引用百科观察者模式(有时又被称为发布(publish)-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。相关角色观察者模式主要包括以下角色:1、抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如A..原创 2020-08-08 09:52:33 · 183 阅读 · 0 评论 -
Java编程23种设计模式实战篇7:Java设计模式_(行为型)_状态模式
引用百科(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式的示意性类图如下所示:相关角色状态模式所涉及到的角色有:●环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。.原创 2020-08-08 09:45:46 · 240 阅读 · 0 评论 -
Java编程23种设计模式实战篇6:Java设计模式_(行为型)_策略模式
引用百科策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。策略模式的优点有:策略模式提供了管理相关的算法族的办法、策略模式提供了可以替换继承关系的办法、使用策略模式可以避免使用多原创 2020-08-08 09:34:36 · 188 阅读 · 0 评论 -
Java编程23种设计模式实战篇5:Java设计模式_(行为型)_模版方法模式
引用百科模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。模板方法模式需要开发抽象类和具体子类的设计师之间的协作。它是类的行为模式,准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意,模板方法所代表的行为称为顶级行为,其逻辑称为顶级逻辑。使用说明在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。.原创 2020-08-08 09:32:28 · 246 阅读 · 0 评论 -
Java编程23种设计模式实战篇4:Java设计模式_(行为型)_访问者模式
引用百科访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。据《大话设计模式》中说算是最复杂也是最难以理解的一种模式了。定义(源于GoF《Design Pattern》):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出结构对象是使用访问者模式必备条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于Java语言当中的collection概念了。相关角色1.抽象访.原创 2020-08-08 09:30:17 · 207 阅读 · 0 评论 -
Java编程23种设计模式实战篇3:Java设计模式_(行为型)_解析器模式
引用百科给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子,属于行为类模式。解释器是一个简单的语法分析工具,它最显著的优点就是扩展性,修改语法规则只需要修改相应的非终结符就可以了,若扩展语法,只需要增加非终结符类就可以了。解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的..原创 2020-08-08 09:25:46 · 188 阅读 · 0 评论 -
Java编程23种设计模式实战篇2:Java设计模式之责任链一
不知不觉中度过了一年多的程序员生涯,在这个过程中、学习了、进步了、收获了,当然最应该感谢的是在生活中、工作中帮助过自己的同事、同学、朋友。在此敬礼、表以最崇高的敬意!从该篇开始记录个人的Java程序员生涯、以此为记、前事不忘、后世之鉴!Java设计模式学习篇:责任链:简单描述:所谓责任链:即是 将一系列的条件限制用一条“链”关联起来,这点类似于Struts中的过滤器一样。多个限制条件对某一个数据或者事物相限制。当链中的前一个链节处理完成以后,就将此处理后的结果交给下一个链节去处...原创 2020-08-08 09:21:34 · 206 阅读 · 0 评论 -
Java编程23种设计模式实战篇1:目录
Java编程25种设计模式实战篇1:目录Java编程25种设计模式实战篇2:Java设计模式之责任链一Java编程25种设计模式实战篇3:Java设计模式_(行为型)_解析器模式Java编程25种设计模式实战篇4:Java设计模式_(行为型)_访问者模式Java编程25种设计模式实战篇5:Java设计模式_(行为型)_模版方法模式Java编程25种设计模式实战篇6:Java设计模式_(行为型)_策略模式Java编程25种设计模式实战篇7:Java设计模式_(行为型)_状态模式Ja原创 2020-08-10 08:23:15 · 254 阅读 · 0 评论