
Java
文章平均质量分 81
邹奇
热爱技术,热爱分享,锻炼身体!坚持开源分享!!!
展开
-
Java 设计模式之【备忘录】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。 备忘录模式是一种对象行为型模式 优点 实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。 提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。 简化了发起者类。发起者不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由备忘录管理者进行管理,这符合单一职责原则。 缺点原创 2021-11-16 11:56:53 · 187 阅读 · 0 评论 -
Java 设计模式之【访问者】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。 访问者(Visitor)模式是一种对象行为型模式 优点 复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。 扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。 符合单一职责原则。访问者模式把相关的行为封装在一起,构成一个访问者,使每一个访问者的功能都比较单一。 缺点原创 2021-11-15 18:15:47 · 544 阅读 · 0 评论 -
Java 设计模式之【迭代器】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 迭代器模式是一种对象行为型模式 优点 遍历任务交由迭代器完成,这简化了聚合类。 访问一个聚合对象的内容而无须暴露它的内部表示。 增加新的聚合类和迭代器类都很方便,无须修改原有代码。 封装性良好,为遍历不同的聚合结构提供一个统一的接口。 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。 缺点 增加了类的个数,这在一定程度上原创 2021-11-12 11:41:46 · 601 阅读 · 0 评论 -
Java 设计模式之【中介者】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。 中介者模式又叫调停模式,它是迪米特法则的典型应用。 优点 类之间各司其职,符合迪米特法则。 将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。 缺点 中介者模式将原本多个对象直接的相互依赖变成了中介者和多个同事类的依赖关系。当同事类越多时,中介者就会越臃肿,变得复杂且难以维护。 模式原创 2021-11-11 15:05:35 · 209 阅读 · 0 评论 -
Java 设计模式之【观察者】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。 这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 优点 目标与观察者之间建立了一套触发机制。 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。 缺点 当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。 模式的结构与实现 实现观察者模式时要注意具体目标对原创 2021-11-10 16:09:48 · 160 阅读 · 0 评论 -
Java 设计模式之【状态】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景拓展状态模式与责任链模式的区别状态模式与策略模式的区别 定义 允许一个对象在其内部状态发生改变时改变其行为能力。 状态模式是一种对象行为型模式, 优点 状态类职责明确,有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。 将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。 缺点 状态模式的使用必然会增加系统的类与对象的个数。 状态模式的结构与实现都较为复杂,如果使用不当会导致程序结构和代原创 2021-11-09 10:50:07 · 478 阅读 · 0 评论 -
Java 设计模式之【责任链】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景模式的扩展 定义 把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 责任链模式也叫职责链模式。 在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,请求会自动进行传递。所以责任链将请求的发送者和请求的处理者解耦了。 优点 增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。 责任分担。每个类只需要处理自己该处理的工作,不该处理的传递原创 2021-11-08 11:27:38 · 131 阅读 · 0 评论 -
Java 设计模式之【命令】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 优点 通过引入中间件(抽象接口)降低系统的耦合度。 可以实现宏命令。命令模式可以与组合模式结合,将多个命令装配成一个组合命令,即宏命令。 扩展性良好,增加或删除命令非常方便。采用命令模式增加与删除命令不会影响其他类,且满足“开闭原则”。 缺点 可能产生大量具体的命令原创 2021-11-05 17:00:24 · 151 阅读 · 0 评论 -
Java 设计模式之【策略】学习与掌握
文章目录前言定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 前言 个人建议设计模式这一系列的文章,多关注定义和模式的代码实现。 至于模式结构和扩展或者是应用场景,基本了解过一下就好,没必要硬记。 这只是我的个人建议,同学们当然可以自己选择知识消化。 鲁迅曾说过:对代码相关的概念,如果理解不了,就狠狠的实践它吧!实践的多了,就自然懂了。 定义 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式,它通过对算法进行封装原创 2021-11-04 11:20:55 · 189 阅读 · 0 评论 -
Java 设计模式之【模板方法】学习与掌握
文章目录定义优点缺点模式的结构与实现模式的结构模式的实现应用场景 定义 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 优点 它在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。 它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 缺点 由于继承关系自身的缺点,如果父类添加原创 2021-11-03 11:27:24 · 203 阅读 · 0 评论 -
Java 设计模式之【组合】学习与掌握
文章目录定义优点缺点组合模式的结构与实现模式的结构模式的实现应用场景 定义 将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。 组合模式一般用来描述整体与部分的关系,它将对象组织到树形结构中,顶层的节点被称为根节点,根节点下面可以包含树枝节点和叶子节点,树枝节点下面又可以包含树枝节点和叶子节点 #mermaid-svg-mNbznDSDAYofUiPR .label{font-family:'trebuchet ms', verdana, arial;font-family:va原创 2021-11-01 14:50:56 · 162 阅读 · 0 评论 -
Java 设计模式之【享元】学习与掌握
文章目录定义优点缺点模式结构与实现模式结构模式的实现应用场景 定义 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 优点 相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 缺点 读取享元模式的外部状态会使得运行时间稍微变长。 为了使对象可以共享,需要将一些不能共享的状态外部化,这将增加程序的复杂性。 模式结构与实现 享元模式的定义提出了两个要求原创 2021-10-28 11:59:55 · 146 阅读 · 0 评论 -
Java 设计模式之【外观】学习与掌握
文章目录定义优点缺点模式结构与实现模式结构模式的实现模式应用场景 定义 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。 该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 优点 降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。 对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。 降低了大型软件原创 2021-10-27 11:05:00 · 107 阅读 · 0 评论 -
Java 设计模式之【装饰器】学习与掌握
文章目录定义优点缺点装饰器模式的结构与实现模式结构模式实现应用场景 定义 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。 优点 装饰器模式完全遵守开闭原则 通过使用不同装饰类及这些装饰类的排列组合,可以实现不同效果 装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用 缺点 装饰器模式会增加许多子类,过度使用会增加程序得复杂性。 装饰器模式的结构与实现 使用组合关系来创建一个包装对象原创 2021-10-26 14:08:55 · 193 阅读 · 0 评论 -
Java 设计模式之【桥接】学习与掌握
文章目录定义优点缺点桥接模式的结构与实现模式的结构模式的实现应用场景 定义 将抽象与实现分离,使它们可以独立变化。 它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 优点 符合开闭原则 符合合成复用原则 其实现细节对客户透明 抽象与实现分离,扩展能力强 缺点 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。 桥接模式的结构与实现 将抽象化部分与实现化部分分开,取消二者的继承原创 2021-10-25 14:53:00 · 179 阅读 · 0 评论 -
Java 设计模式之【适配器】学习与掌握
文章目录定义与特点优点缺点模式的结构与实现模式的结构类适配器模式实现对象适配器模式实现模式应用场景模式的扩展 定义与特点 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高 优点 在很多业务场景中符合开闭原则。 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致原创 2021-10-22 14:07:22 · 158 阅读 · 0 评论 -
Java 设计模式之【建造者】学习与掌握
文章目录定义优点缺点模式的结构与实现结构实现应用场景建造者模式和工厂模式的区别模式的扩展 定义 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 优点 封装性好,构建和表示分离。 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而原创 2021-10-19 14:39:04 · 140 阅读 · 2 评论 -
Java 设计模式之【工厂方法】学习与掌握
文章目录定义优点缺点模式结构与实现模式结构模式实现应用场景 定义 定义一个用于创建产品的接口,由子类决定生产什么产品。 优点 灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。 典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。 迪米特法则:又叫作最少知识原则。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该原创 2021-10-18 15:01:34 · 181 阅读 · 0 评论 -
Java 设计模式之【原型】学习与掌握
文章目录什么是原型优点缺点模式结构与实现模式结构模式实现应用实例 什么是原型 将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。 优点 Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。 缺点 需要为每一个类都配置一个 clone 方法 clone 方法位于类的内部原创 2021-10-14 17:06:21 · 149 阅读 · 0 评论 -
Java 设计模式之【单例】学习与掌握
文章目录定义特点优缺点应用场景实现懒汉式单例饿汉式单例单例模式的扩展 定义 某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 特点 单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单例的全局访问点。 优缺点 优点 可以避免对资源的多重占用。 单例模式设置全局访问点,可以优化和共享资源的访问。 单例模式可以保证内存里只有一个实例,减少了内存的开销。 缺点 单例模式的功能代码通常写在一个类中,如果功能设计不合理原创 2021-10-09 11:15:53 · 194 阅读 · 0 评论 -
Java 设计模式之【代理】 学习与掌握
文章目录什么是代理代理分类两种代理的优缺点及应用场景实践理解两种代理主要区别 文章讲 静态代理 和 动态代理 两种代理。 什么是代理 对其他对象提供一种代理,用来控制对这个被代理对象的访问。 简单来说,在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理分类 静态代理 动态代理 两种代理的优缺点及应用场景 静态代理 【优点】 使用者只关心业务逻辑,不需要着眼内部实现,方便后期的变更和部分共用代码的统一处理。 【缺点】 当原创 2021-10-04 17:09:35 · 108 阅读 · 0 评论 -
实体对象集合中根据实体对象的某一属性进行大小排序
背景 代码实现 思路简述 效果图示 背景 今天我的领导跟我提了一个小小的建议,我觉得很不错。我有这么一个界面,显示的是小车的电量信息,界面很简单,简单的由listView控件展示数据。界面的小车电量信息是根据实时包获取得到的,所以数据源中的电量值大小显然不是有序排列的。但是我这边也没做处理,只要求查看电量信息,我就简单的只做了数据的展示,没有根据小车id大小或者是小车电量值大小...原创 2018-04-03 22:37:40 · 3265 阅读 · 3 评论 -
将byte数组转换为Object对象
背景 方法 A little bit of progress every dayCome on 背景 获取的实时消息返回的数据是byte数组,我需要将其转为对应的数据类型才可以进一步实现对数据的使用。那么我们可以将其先转为Object类型,然后再由Object类型转为其他的数据类型,这样就可以使用了。 方法 代码如下: /** * 将byte数组转化为Object原创 2018-02-02 20:06:25 · 20193 阅读 · 2 评论 -
java -version可以查看jdk版本,但是javac不可以查看jdk版本的解决办法
出现这个原因是因为环境变量没有全部设置成功,只设置了部分,最好的办法就是重新设置。 大家打开cdm命令窗口,输入以下指令即可: 1、set JAVA_HOME=你的jdk安装路径2、set CLASSPATH=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;3、set path=%JAVA_HOME%\bin; 当以上3个环境变量设置好了后就可以使用原创 2017-06-15 12:24:37 · 8460 阅读 · 4 评论 -
IntelliJ/android studio运行Java项目,控制台输出乱码的解决办法
运行java项目出现了乱码,截图如下:很显然这是编码的问题。这是因为我这个类的代码是采用utf-8编码的,但是IntelliJ的控制台默认不是utf-8编码的,所以运行java项目后,控制台出现了乱码。解决方法:设置输出控制台的编码格式也为utf-8即可。在出现乱码的Java工程目录下的build.gradle文件添加如下配置:tasks.withType(JavaCompile){ opt原创 2017-04-07 18:13:44 · 1285 阅读 · 0 评论 -
自定义异常
今天看书,看到了关于自定义异常类的使用,觉得很有必要记录下来供大家一起探讨。以下是书中的内容: 1.创建自定义异常类 创建自定义的异常类需要继承自Exception类,并提供含有一个String类型形参的构造方法,该形参就是异常的描述信息,可以通过getMessage()方法获得。例如: public class NewException extends Exception{ publi翻译 2015-12-24 17:18:07 · 2269 阅读 · 0 评论