java设计模式
文章平均质量分 79
java设计模式
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
Java中JDK设计模式
文章目录1 JDK设计模式1.1 问题引入1.2 jdk中设计模式1.2.1 Singleton(单例)1.2.2 Factory(静态工厂)1.2.3 Factory Method(工厂方法)1.2.4 bstract Factory(抽象工厂)1 JDK设计模式1.1 问题引入本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助。设计模式是什么:反复出现问题的解决方案增强软件的灵活性适应软件原创 2021-11-04 09:55:37 · 352 阅读 · 0 评论 -
JAVA设计模式之模板方法模式
1 模板方法模式定义定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤类型:行为类模式2 demo例子事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印...原创 2019-08-05 09:34:28 · 314 阅读 · 0 评论 -
JAVA设计模式之外观模式
1 外观模式概述为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。类型:结构型模式。1.1 使用场景当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的...原创 2019-08-01 11:31:27 · 202 阅读 · 0 评论 -
JAVA设计模式之享元模式
1 享元模式概述运用共享技术有效地支持大量细粒度的对象类型:结构型模式。当都具备下列情况时:一个应用程序使用了大量的对象。 完全由于使用大量的对象,造成很大的存储开销。 对象的大多数状态都可变为外部状态。 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 应用程序不依赖于对象标识。由于Flyweight对象可以被共享,对于概念上明显有别的对象,标识测试将...原创 2019-08-01 11:48:42 · 223 阅读 · 0 评论 -
JAVA设计模式之访问者模式
1 访问者模式定义封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作类型:行为类模式2 demo例子class A { public void method1(){ System.out.println(“我是A”); } public void method2(B b){...原创 2019-08-08 09:40:13 · 155 阅读 · 0 评论 -
JAVA设计模式之中介者模式
1 中介者模式定义用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互类型:行为类模式2 中介者模式的结构中介者模式又称为调停者模式,共分为3部分:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现 中介者实现类:从抽象中介者继承而来,...原创 2019-08-06 09:37:58 · 162 阅读 · 0 评论 -
JAVA设计模式之命令模式
目录1 命令模式定义2 demo例子3 命令模式的优缺点3.1 命令模式的封装性很好3.2 命令模式的扩展性很好3.3 最后说一下命令模式的缺点3.4 命令模式的适用场景4 命令模式总结1 命令模式定义将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能类型:行为类模式命令模式的结...原创 2019-08-09 10:20:52 · 278 阅读 · 0 评论 -
JAVA设计模式之观察者模式
1 观察者模式定义定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新类型:行为类模式在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署的功能,就像eclipse开发时...原创 2019-08-07 15:59:35 · 253 阅读 · 0 评论 -
JAVA设计模式之责任链模式
1 责任链模式定义使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止类型:行为类模式先看一段demo:public void test(int i, Request request){ if(i==1){ Handler1.response(request);...原创 2019-08-09 19:20:53 · 255 阅读 · 2 评论 -
JAVA设计模式之策略模式
目录1 策略模式定义2 demo例子3 策略模式的优缺点3.1 策略模式的主要优点有3.2 策略模式的缺点主要有两个1 策略模式定义定义一组算法,将每个算法都封装起来,并且使他们之间可以互换类型:行为类模式策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封...原创 2019-08-09 19:34:55 · 328 阅读 · 0 评论 -
JAVA设计模式之迭代器模式
目录1 迭代器模式定义1.1 迭代器模式的结构:2 demo例子3 迭代器模式优缺点3.1 迭代器模式的优点有:3.2 迭代器模式的缺点:4 迭代器模式的适用场景1 迭代器模式定义提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节类型:行为类模式如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭...原创 2019-08-10 13:32:29 · 167 阅读 · 0 评论 -
JAVA设计模式之解释器模式
目录1 解释器模式定义1.1 解释器模式的结构2 demo例子3 解释器模式优缺点以及适用场景3.1 解释器模式的优缺点3.2 解释器模式的适用场景4 注意事项1 解释器模式定义给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子类型:行为类模式1.1 解释器模式的结构抽象解释器:声明一个所有具体表达式都要实现的...原创 2019-08-10 13:51:39 · 182 阅读 · 0 评论 -
JAVA设计模式之备忘录模式
目录1 备忘录模式定义1.1 备忘录模式的结构:2 demo例子2.1 通用代码2.2 多状态多备份备忘录3 备忘录模式的优点4 备忘录模式的缺点1 备忘录模式定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将该对象恢复到原先保存的状态类型:行为类模式我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可...原创 2019-08-10 14:04:04 · 194 阅读 · 0 评论 -
JAVA设计模式之状态模式
目录1 状态模式概述1.1 参与者2 demo例子1 状态模式概述定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新类型:行为类模式适用性:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态这个状态通常用一个或多个枚举常量表...原创 2019-08-10 14:38:07 · 213 阅读 · 0 评论 -
JAVA设计模式之装饰模式
1 装饰模式概述1.1 定义动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活类型:结构型模式适用性:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 处理那些可以撤消的职责 当不能采用生成子类的方法进行扩充时1.2 参与者:1.Component定义一个对象接口,可以给这些对象动态地添加职责。2.Co...原创 2019-07-19 17:02:47 · 152 阅读 · 0 评论 -
JAVA设计模式之组合模式
目录1 概述1.1 定义1.2 参与者1.3 demo1 概述1.1 定义将对象组合成树形结构以表示“部分-整体”的层次结构。“Composite(组合)使得用户对单个对象和组合对象的使用具有一致性。”类型:结构型模式适用性:想表示对象的部分-整体层次结构 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象1.2 参与者1.C...原创 2019-07-19 15:50:06 · 292 阅读 · 0 评论 -
JAVA设计模式之桥接模式
1 概述将抽象部分与它的实现部分分离,使它们都可以独立地变化。类型:结构型模式。适用性:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。 正如在意图一节...原创 2019-06-25 15:53:01 · 202 阅读 · 0 评论 -
JAVA设计模式六大原则:(1)单一职责原则
1 定义单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。2 描述问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2...原创 2019-05-31 14:02:45 · 278 阅读 · 1 评论 -
JAVA设计模式六大原则:(2)里氏替换原则
1 定义定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。定义2:所有引用基类的地方必须能透明地使用其子类的对象。2 描述问题由来:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功...原创 2019-05-31 15:57:45 · 779 阅读 · 0 评论 -
JAVA设计模式六大原则:(3)依赖倒置原则
1 定义依赖倒置原则定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。2 描述问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类...原创 2019-05-31 16:09:12 · 410 阅读 · 0 评论 -
JAVA设计模式六大原则:(4)接口隔离原则
1 定义接口隔离原则定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。2 描述问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。代码如下:...原创 2019-05-31 16:29:39 · 420 阅读 · 0 评论 -
JAVA设计模式六大原则:(5)迪米特法则
1 定义迪米特法则定义:一个对象应该对其他对象保持最少的了解。2 描述问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是...原创 2019-05-31 16:36:01 · 771 阅读 · 0 评论 -
JAVA设计模式六大原则:(6)开闭原则
1 定义开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。2 描述问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是...原创 2019-05-31 16:46:34 · 434 阅读 · 0 评论 -
JAVA设计模式之单例模式
目录1 定义2 实际应用2.1 饿汉式单例2.2 懒汉式单例3 单例模式的优点4 适用场景5 单例模式注意事项6 关于java中单例模式的一些争议6.1 单例模式的对象长时间不用会被jvm垃圾收集器收集吗6.2 在一个jvm中会出现多个单例吗6.3 懒汉式单例线程安全吗?6.4 单例模式只有饿汉式和懒汉式两种吗?6.5 单例类可以被继承吗?...原创 2019-05-31 18:05:38 · 335 阅读 · 1 评论 -
JAVA设计模式之代理模式
目录1 定义2 代理模式的分类2.1 静态代理2.2 动态代理2.2.1 JDK中生成代理对象的API2.2.2 Cglib代理1 定义概述:为其他对象提供一种代理以控制对这个对象的访问。提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思...原创 2019-06-15 11:13:41 · 258 阅读 · 0 评论 -
JAVA设计模式之工厂方法模式
目录1 工厂方法模式定义2 工厂模式定义3 工厂方法模式有四个要素4简单工厂模式跟工厂方法模式的区别5 典型应用1 工厂方法模式定义定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式工厂方法模式代码interface IProduct { public void product...原创 2019-06-21 11:34:36 · 318 阅读 · 0 评论 -
JAVA设计模式之抽象工厂模式
目录1 定义2 抽象工厂模式与工厂方法模式的区别3 总结:1 定义定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式。2 抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个...原创 2019-06-21 11:47:38 · 176 阅读 · 0 评论 -
JAVA设计模式之建造者模式
目录1 定义2 代码实现3 比较及总结1 定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式。四个要素:产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的...转载 2019-06-21 14:40:41 · 366 阅读 · 0 评论 -
JAVA设计模式之原型模式
目录1 原型模式定义2 实现代码3 使用注意1 原型模式定义定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式。原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行...原创 2019-06-21 15:08:09 · 288 阅读 · 0 评论 -
JAVA设计模式之适配器模式
目录1 适配器模式概述2 例子1 适配器模式概述将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类型:结构型模式。适用性:你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口 可能不一定兼容的类)协同工作。 (仅适用...原创 2019-06-25 15:45:57 · 229 阅读 · 0 评论 -
java设计模式和设计原则巧记技巧
目录1 java设计原则1.1 原则巧记技巧2 java设计模式2.1 创建型模式2.2 结构型模式2.3 行为型模式1 java设计原则1.1 原则巧记技巧技巧:依接单,开地(迪)里主要有:依赖倒置原则,接口隔离原则,单一职责原则,开闭原则,迪米特法则,里氏替换原则2 java设计模式2.1 创建型模式5种创建型模式巧记技巧:建工单原建造者...原创 2019-05-31 11:31:16 · 682 阅读 · 8 评论