JAVA23种设计模式
介绍java的23种设计模式
CoderJu
这个作者很懒,什么都没留下…
展开
-
JAVA23种设计模式总结
目录一.对象设计的六大原则二、设计模式的三个分类三、JAVA2种设计模式源码一.对象设计的六大原则: 组合复用原则:多用组合,少用继承。找到变化的部分进行抽象封装。区分是Has-A与Is-A 依赖倒置原则:依赖:成员变量、方法参数、返回值,要依赖与抽象,不要依赖于具体,高层模块不应该依赖于底层模块,二者都应该依赖其抽象类。抽象不应该依赖具体,具体应该依赖抽象。...原创 2019-03-20 23:39:42 · 185 阅读 · 0 评论 -
JAVA23种设计模式之备忘录模式
备忘录模式备忘录模式又叫做快照模式,是对象的行为模式。备忘录模式中的备忘录对象是一个用来存储另一个对象内部快照的对象。备忘录模式的定义是在不破坏封装的条件下,捕获一个对象的内部状态,并且在该对象外部外保存起来,从而实现可以在适当的时候将这个对象还原到原来存储的状态。就相当于快捷键Ctrl+Z。例如我们日常下围棋的时候悔棋,玩游戏时候的存档都是备忘录模式。备忘录模式中的角色备忘录角色:负...原创 2019-03-12 23:59:25 · 268 阅读 · 0 评论 -
JAVA23种设计模式之模板模式
模板模式:是类的行为模式, 定义一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法迫使子类实现剩余逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同实现。(其实这种定义生涩难懂了!!!)。换白话文说就是,系统定义一个抽象类,这个抽象类是用来干嘛的呢?用来定义系统的的步骤,而且这个步骤是不可改变先后顺序的。类似于泡茶,你首先要准备开水,然后冲...原创 2019-03-20 00:17:15 · 201 阅读 · 0 评论 -
JAVA23种设计模式之适配器模式
1. 适配器模式:将一个类的接口转换成用户希望的另外一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式就类似一个桥梁的作用,把原本不兼容的接口进行合并成为一个类。2. 适配器模式的类别:类适配器模式:通过继承来实现适配器功能。对象适配器模式:使用类的组合来实现适配器功能。接口适配器模式(缺省适配器模式):增加一个桥梁,来减少工能类中的方法体。(...原创 2019-03-19 00:44:54 · 144 阅读 · 0 评论 -
JAVA23种设计模式之外观模式
外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易调用。从外观模式的定义中可以了解到,其实外观模式相当于一个中间人,比如说你要去酒店吃饭,你并不需要知道菜的做法,不需要知道菜的清洗过程,也不需要知道菜的来源。你只需要喊上服务员和他说我要吃什么就可以了,这里的服务员其实就相当于一个外观角色,也就是一个更高层的接口。而饭店中的各种菜就相当于一...原创 2019-03-17 23:39:01 · 116 阅读 · 0 评论 -
JAVA23种设计模式之访问者模式
访问者模式访问者模式是对象的行为模式,访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改,接受这个操作的数据结构则保持不变。换句话说就是把数据结构和需要对该数据结构进行的操作分离处理,当需要对当前数据结构做新的操作时,只需要修改操作部分而不需要修改数据结构的代码。访问者模式的示意图访问者模式所包含的角色抽象访问者角色: 一般是抽象类或者是接口,为系统中每个...原创 2019-03-15 23:58:45 · 145 阅读 · 0 评论 -
JAVA23种设计模式之原型模式
原型模式原型模式是对象的创建模式,通过给出一个原型对象来指出所有创建对象的类型,然后用复制这个原型对象的方法创建出更多类型的对象。换句话说,就是将一个原型对象传递给到要做创建动作的对象,那个要进行创建动作的对象通过请求原型对象拷贝自己来实现创建过程。这里需要说明的是,同过克隆或者复制所创建的对象都是全新的对象,他们在内存中有各自新的地址。并且每个克隆或者复制对象是相互独立的。原型模式的...原创 2019-03-14 23:56:57 · 310 阅读 · 0 评论 -
JAVA23种设计模式之中介者模式
1. 中介者模式中介者模式使用于降低多个对象和类之间的通信复杂度,该模式提供了一个类作为中介者,该类主要处理各个对象之间的通信,使各个对象直接不需要显性的相互引用,从而解耦。这种模式是对象的一种行为模式。换句话说中介者模式就是将对象直接的引用抽取到具体的中介者中2. 中介者模式示例图3. 中介者模式中的角色抽象中介者角色:一般是一个接口或者抽象类,该接口用于与各个同事角色之间通信。...原创 2019-03-12 00:07:56 · 149 阅读 · 0 评论 -
JAVA23种设计模式之解释器模式
解释器模式解释器模式是类的行为模式,给定一个语言,定义他的文法表示,并且定义一个解释器,客户端可以使用这个解释器来解释这个语言中的句子。一般在现实应用中使用的比较少,毕竟相对来说,我们一般不需要自己定义一套自己的语法来解析。其实相对来说,解释器就相当于大脑,把一句话翻译成可以理解的内容。解释器模式的示例图解释器模式包含的角色抽象表达式角色:声明一个所有具体表达式角色都需要实现或者继...原创 2019-03-10 20:16:43 · 145 阅读 · 0 评论 -
JAVA23种设计模式之享元模式(蝇量模式)
享元模式(蝇量模式)该模式是对象的结构模式。享元模式主要功能是以共享的方式高效地支持大量的细粒度对象。从而实现这些细粒度对象的复用,这样系统就可以使用少量的比较相似的状态变化小的对象,从而实现对象复用。在这种情况下就要求共享的对象必须是细粒度的对象。享元模式一般分为两类单纯的享元模式和复合的享元模式。如果要区分单纯享元模式和复合享元模式,这里要介绍下内部状态和外部状态。内部状态:在享元内部对...原创 2019-03-08 23:32:39 · 252 阅读 · 0 评论 -
JAVA23种设计模式之责任链模式
责任链模式是一种对象的行为模式,在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理该请求为止。换句话说,就是一个请求发送过来,先有A进行判断自己能否处理,如果能够处理就直接处理掉,不能的话就传递给到B,B也做和A同样的操作,直到有一个将这个请求处理掉为止。责任链模式示意图责任链模式中的角色抽象处理者角色: 处理请...原创 2019-03-07 23:17:51 · 201 阅读 · 0 评论 -
JAVA23种设计模式之生成器模式
生成器模式生成器模式是一种对象的创建模式,可以将一个复杂产品的内部表象和产品的生产过程分隔开来,(构建与表示分离)。使得同样的构建过程可以创建不同的表示。简单的来说,就是讲一个复杂的对象拆分成一个一个小的对象,然后通过排列组合的方式生成不同的复杂对象。举个栗子:例如快餐店的套餐,会有个定价,比如说总价是20元套餐。可以有两素菜一个荤菜。素菜包括清炒白菜、土豆丝、麻婆豆腐等等,荤菜包括口水鸡,...原创 2019-03-05 23:42:44 · 925 阅读 · 0 评论 -
JAVA23种设计模式之桥接模式
桥接模式将抽象部分与它的实现部分分离,使他们可以独立的变化。如果对象设计存在多个维度,我们就可以把多个维度进行分离,例如,我们需要画出一个带颜色的形状,这里形状有圆形、矩形、正方形等等,颜色就更多,例如红橙黄绿等等,这里我们就可以将形状分离出两个层次:形状和颜色。这就需要使用桥接模式来处理。桥接模式的类图从类图中可以看出这个系统具有两个等级结构:由抽象化角色和继承该抽象化角色的具体角...原创 2019-03-04 21:05:40 · 250 阅读 · 0 评论 -
JAVA23种设计模式之复合模式
复合模式:设计模式经常会一起使用,通过两个或者多个设计模式组合在一起,共同解决一般性的或者一系列的问题。复合模式的示例《MVC 模式》以MVC为例讲解:Model:是MVC结构的程序主体,包含了业务数据和业务逻辑。View:与用户交互的界面,显示接收数据,不参与实际的业务逻辑。Controller:接受用户输入的数据,并且传递给到Model。在MVC模式中:...原创 2019-03-01 22:27:21 · 441 阅读 · 2 评论 -
JAVA23种设计模式之命令模式
1. 命令模式:把一个请求或者操作封装到一个对象中。从而允许系统使用不同的请求对客户进行参数化。对请求排队或者记录请求日志,还可以提供命令的撤销和恢复。是一种行为类模式。(说实话,这个定义基本无法让人理解!)。命令模式是把每个命令进行封装,将命令请求发送者和命令接受者进行解耦。在这个模式中,请求者(持有具体的命令类)发送请求,具体的命令类(持有接收者)接受到后,执行接受者(具体操作的执行者)的...原创 2019-02-27 00:10:53 · 128 阅读 · 0 评论 -
JAVA23种设计模式之组合模式
组合模式组合模式又叫部分整体模式,适用于把一组相似的对象当做一个单一的对象进行处理,组合模式是以树形结构来表示部分-整体的层次结构。组合模式是用户可以按照相同的方法去处理单个对象和组合对象。组合式示意图:组合模式在使用上又分为两种,一种是透明组合模式和安全组合模式。类图分别如下:2.1. 透明组合模式 :抽象的根节点声明了管理叶节点的方法以及业务方法,客户端可以一致对待所有对象。但是由于叶...原创 2019-02-28 00:00:47 · 107 阅读 · 0 评论 -
JAVA23种设计模式之代理模式(三)动态代理模式
动态代理动态代理又叫做JDK代理、接口代理。其和静态代理的区别是不需要实现接口。而是直接利用JDK的API动态的在内存中创建代理对象。在JDK中生成代理对象的API,存在于java.lang.reflect.Proxy这个包内。JDK实现代理只需要使用newProxyInstance方法即可。调用方式如下:/** 返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序...原创 2019-02-25 23:18:10 · 94 阅读 · 0 评论 -
JAVA23种设计模式之代理模式(二)静态代理模式
静态代理模式静态代理模式就是在代码中已经确定后代理类和被代理类的关系,在运行中不能做任何修改。这种模式要求在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同接口或者继承相同父类。这种代理模式要求代理对象和被代理对象需要共同继承的类或者接。示例代码:public interface Caculate { int add(int a,int b) ; int sub...原创 2019-02-24 22:46:49 · 102 阅读 · 0 评论 -
JAVA23种设计模式之代理模式(一)远程代理RMI
代理模式代理模式会给某个对象提供一个代理对象,并且有代理对象控制原对象的引用。通俗的说,就是给实际对象找个代理人,由他负责对外的的联系,例如现实社会中的代理律师。由于代理模式相对较多,这里会提出几个使用比较多的代理模式作为示例。代理模式的实例2.1. 远程代理模式(RMI)远程代理实际上就是,为一个位于不同的地址空间的对象提供一个本地代理对象。这个不同的地址空间可以是在同一台主机中,也可...原创 2019-02-21 22:16:17 · 424 阅读 · 0 评论 -
JAVA23种设计模式之状态模式
状态模式状态模式允许一个对象在其内部状态发送改变时,改变其行为,看上去就像是改变了他的类一样。状态模式要求我们把对象的行为放到对象不同的状态中。随着状态的改变对象的行为也随之发生改变。另外重要的一点是,我们研究的对象要持有所有的状态,在状态类中是通过对象来改变其自身的状态的。状态模式的示意图状态模式包含的角色环境角色:持有所有自身所有的状态。而且,该类中也定义了当前对象转换状态的操作...原创 2019-01-30 22:47:28 · 235 阅读 · 0 评论 -
JAVA23种设计模式之组合模式
组合模式组合模式又叫部分整体模式,适用于把一组相似的对象当做一个单一的对象进行处理,组合模式是以树形结构来表示部分-整体的层次结构。组合模式是用户可以按照相同的方法去处理单个对象和组合对象。组合式示意图:组合模式在使用上又分为两种,一种是透明组合模式和安全组合模式。类图分别如下:2.1. 透明组合模式 :抽象的根节点声明了管理叶节点的方法以及业务方法,客户端可以一致对待所有对象。但是由于叶...原创 2019-01-27 23:53:08 · 122 阅读 · 0 评论 -
JAVA23种设计模式之迭代器模式
迭代器模式提供一种方法来顺序访问一个聚合对象中各个元素,而又无需暴露该对象的内部表示。首先解释下什么叫做聚合对象,就)是可以存储多个成员的元素或者是对象的的类。一般情况下,聚合对象主要是用来存储数据和和遍历书,这样就可以联想到JAVA中的list,数组,HashSet等等。这些确实都是聚合对象。这里就存在个问题,就是当我们要遍历不同类型的聚合对象时,就要清楚的知道其结构,毕竟不同结构的聚合对...原创 2019-01-23 23:42:38 · 193 阅读 · 0 评论 -
JAVA23种设计模式之工厂模式(三)
抽象工厂模式3.1. 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。3.2. 抽象工厂类图如下:从上图可以看出,抽象工厂方法允许有一个最顶层的工厂接口或者抽象工厂类,该类下可以有多个不同的工厂,如factory1,factory2等等。工厂1和2都能生产一系列的产品A和B,但是工厂1和工厂2生产的A和B都是相互独立的。举个例子,以手机为例,productA表示手...原创 2019-01-21 22:58:01 · 167 阅读 · 0 评论 -
JAVA23种设计模式之工厂模式(二)
工厂方法模式:定义:定义一个用于创建对象的接口,让子类去决定实例化哪一个类,工厂方法是使一个类实例化过程延迟到其子类中。在这种模式下,工厂类不在是实体类,而是一个接口或者抽象类,具体实现则是要到其子类中。这样就可以规避掉简单工厂模式中新增对象是需要修改工厂类的缺点。工厂方法模式包括以下四个角色:抽象的工厂角色: 这个角色是工厂方法模式的核心。创建对象的工厂类必须实现改接口。一般含有返回...原创 2019-01-16 22:51:47 · 150 阅读 · 0 评论 -
JAVA23种设计模式之工厂模式(一)
1. 简单工厂方法模式:1.1. 定义:又称为静态工厂模式,具体功能为:定义一个工厂类,来根据对应的条件,动态的创建不同的新的对象。这种模式其实就是相当于一个菜单,客户只需要知道菜名,并不需要关心对应的菜的做法以及做的具体过程,而知道知道具体菜名,客户就可以在同一个菜单上点不同的菜,而不用关心其他的。1.2. 简单工厂的示意图如下:1.3. 简单工厂示例代码如下:场景:顾客在饭店,通过菜...原创 2019-01-15 23:36:34 · 149 阅读 · 0 评论 -
JAVA23种设计模式之单例模式
单例模式:单例模式涉及到一个单一的类,在系统运行中,确保这个类只有一个实例。而且这个实例是这个类自己创建的或者实例化的。也就是说这个类提供了一种访问其唯一对象的方式,可直接访问不需要实例化。单例模式是JAVA的23中设计模式中最简单的模式,但是在很多场景下需要使用单例模式。单例模式的特定: 单例类只能有一个实例 单例类必须自己创建自己的唯一实例。 ...原创 2019-01-13 22:43:37 · 128 阅读 · 0 评论 -
JAVA23种设计模式之装饰者模式
装饰者模式:又名包装模式,顾名思义,就是通过一定的方式,包装一个对象。给他附加上各种不同的属性,但是又不改变被包装对象的结构。通过定义可以看出,装饰者模式其实是子类继承的一种替代方式。装饰者模式包含的角色:被装饰对象的抽象角色: 给出一个抽象类或者接口,可以动态的给对象增加属性,规范对象属性的内容。具体被装饰对象角色: 定义一个具体的对象,用于接受附加的属性。对于开发来说就是定义一个...原创 2019-01-12 21:41:00 · 385 阅读 · 1 评论 -
JAVA23种设计模式之观察者模式
观察者模式:是一种对象的行为模式,又叫做发布订阅模式,相当于现在的订阅微信公众号功能。微信公众号是被观察者,关注公众号的用户是观察者。这些被观察者与观察者之间存在一对多的关系,当被观察者发生变化时,会通知观察者,让他们能知悉。公众号推送消息,所有的关注用户都可以接收到消息,就是这个道理。观察者模式分类:观察者模式分为两大类:推模型和拉模型推模型:被观察者发生改变主动向观察者推送,不管观...原创 2019-01-11 23:16:09 · 225 阅读 · 0 评论 -
JAVA23种设计模式之策略模式
策略模式:定义一系列的算法,并且将每个算法封装起来。让他们可以相互替换。策略模式是对于算法的包装,把算法本身与算法的使用分隔开,使用不同的对象管理。策略模式示意图:来源于《菜鸟教程》策略模式设计到的角色有:策略角色:即图上的Strategy。对于开发人员来说,即为抽象类或者接口,主要目的是提供给到具体策略实现类做继承或者实现。具体策略:即为图上的OperationAdd,O...原创 2019-01-10 14:40:14 · 165 阅读 · 0 评论