
java
闲人不梦卿
涂歌郎朗巷舞妖娆万事求真谛,兵贵神速学贵谨严人生得至理
展开
-
类和对象总结
对面向对象的理解面向过程面向过程,核心是过程二字。过程即解决问题的步骤,设计一条流水线,机械式的思维方式。它考虑的是实际地实现,针对一个特定的问题去思考其解决步骤。学过C语言的同学就知道,用C语言编程,我们需要去解析题意,分析目的,画出流程图,按着步骤实现。这就是一种面向过程的思考方式。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦...原创 2022-01-15 13:13:55 · 222 阅读 · 0 评论 -
设计模式之中介者模式
设计模式之中介者模式1. 中介者模式1.1 定义与特点 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。 中介者模式是一种对象行为型模式,其主要优点如下。 1.类之间各司其职,符合迪米特法则。 2.降低了对象之间的耦合性,使得对象易于独立地被复用。 3.将对象间的一对多关联转变为一对一的关联,提高系统的灵活性,使得系统易于维护和扩展。 其主要缺点是: 1.中原创 2021-06-08 18:09:50 · 131 阅读 · 0 评论 -
java设计模式之观察者模式(含完整例子和UML类图)
java设计模式之观察者模式1.观察者模式1.1定义 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 观察者模式是一种对象行为型模式,其主要优点如下:降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。 它的主要缺点如下:目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环原创 2020-08-14 12:16:35 · 7270 阅读 · 1 评论 -
StringUtils截取字符substringBefore等方法使用
StringUtils截取字符substringBefore等方法使用 列子: String s = "123 I abc"; //从分隔符第一次出现的位置向前截取 System.out.println(StringUtils.substringBefore(s, " ")); //123 //从分隔符最后一次出现的位置向前截取: System.out.println(StringUtils.substringBeforeLast(s, " "));//123 I /原创 2020-06-02 13:06:54 · 16424 阅读 · 1 评论 -
设计模型之状态模式含UML完整实例)
设计模型之状态模式1. 状态模式 什么是状态模式?以电梯为例。电梯的状态有停止、运行、开门和关门等状态。而且每个状态还都要有特定的行为,比如在开门的状态下,电梯只能关门,而不能运行;在关门状态下,电梯可以运行、开门等。用一张表来表示这个关系:电梯开门关门运行停止开门状态×√××关门状态√×√×运行状态×××√停止状态√...原创 2020-04-18 21:22:02 · 2334 阅读 · 0 评论 -
设计模型之责任链模式含UML完整实例)
设计模型之责任链模式1. 责任链模式1.1 定义与特点 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 注意:责任链模式也叫职责链模式。 在责任链模式中,客户只需要将请求发送到责任链上即可...原创 2020-04-16 15:32:46 · 4383 阅读 · 0 评论 -
设计模型之命令模式含UML完整实例)
设计模型之命令模式1. 命令模式1.1 定义与特点 命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 命令模式的主要优点如下:降低系统的耦合度。命令模式能将调用操作的对象与实现该操作的对象解耦。增加或删除命令非常方便。采用命令模式增加与...原创 2020-04-16 10:49:39 · 2591 阅读 · 0 评论 -
设计模型之策略模式含UML完整实例)
设计模型之策略模式1. 策略模式1.1 定义与特点1.2 模式的结构1.3 问题由来1.4 解决思路1.5 UML类图1.6 解决方案原创 2020-04-15 13:52:30 · 1913 阅读 · 0 评论 -
设计模型之模板方法模式含UML完整实例)
设计模型之模板方法模式1. 模板方法模式1.1 定义与特点 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 该模式的主要优点如下:它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。它在父类中提取了公共的部分代码...原创 2020-04-15 09:25:49 · 2266 阅读 · 0 评论 -
设计模型之组合模式含UML完整实例)
设计模型之组合模式1. 组合模式1.1 定义与特点 有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。 组合模式的主要优点有:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;更容易在组合体内加入新的对象,客户端不会因为...原创 2020-04-14 23:45:42 · 4216 阅读 · 0 评论 -
设计模型之享元模式含UML完整实例)
设设计模型之享元模式1. 享元模式1.1 定义与特点 运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 享元模式的主要优点是:相同对象只要保存一份,这降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。 享元模式的主要缺点是:为了使对象可以共享,需要将一些...原创 2020-04-14 09:50:57 · 1067 阅读 · 0 评论 -
设计模型之外观模式(含UML完整实例)
设设计模型之外观模式1. 外观模式1.1 定义与特点 是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 外观(Facade)模式是“迪米特法则”的典型应用,它有以下主要优点:降低了子系统与客户端之间的耦合度,使得子系统的变化...原创 2020-04-13 21:24:17 · 2554 阅读 · 1 评论 -
设计模型之装饰者模式(含UML完整实例)
设设计模型之装饰者模式1. 装饰者模式1.1 定义与特点 装饰(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。(有点像代理模式的功能,代理对象提供了与真实对象相同的方法,并可以扩展真实对象的功能) 装饰(Decorator)模式的主要优点有:采用装饰模式扩展对象的功能比采用继承方式更加灵活...原创 2020-04-13 20:40:55 · 2578 阅读 · 0 评论 -
设计模型之桥接模式(含UML完整实例)
设设计模型之桥接模式1. 桥接模式1.1 定义与特点 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起来,减少了各维度间的耦合。1.2 模式的结构 桥接(Bridge)模式包含以下主要角色:抽象化(Abstracti...原创 2020-04-12 19:04:30 · 2350 阅读 · 0 评论 -
设计模型之适配器模式(含UML完整实例)
设设计模型之适配器模式1.适配器模式1.1 定义与特点 适配器模式(Adapter)的定义如下:使用一个已经存在的类,而他的接口不符合我们的需求。这个时候我们本着开闭原则,要创建一个既符合我们需求(加入独立的或不兼容的接口功能)又实现了已存在的接口的类。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对...原创 2020-04-11 20:39:28 · 9054 阅读 · 0 评论 -
设计模型之代理模式(含UML完整实例)
设计模型之代理模式1.代理模式1.1 定义与特点 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度...原创 2020-04-11 16:50:38 · 3853 阅读 · 0 评论 -
设计模型之创建者模式(含UML完整实例)
设计模型之创建者模式1.创建者模式1.1 定义与特点1.2 模式的结构1.3 UML类图1.4 问题由来 大家知道一辆车是很复杂的,有发动机、变速器、轮胎、挡风玻璃、雨刮器、气缸、方向盘等等无数的部件。 用户买车的时候不可能一个一个去指定我要那种类型的变速器、我要一个多大的轮胎、我需要长宽高多少的车,这是不现实的 通常用户只会和销售谈我需要什么什么样的类型的车,马力要不要强劲...原创 2020-04-11 15:26:08 · 1740 阅读 · 0 评论 -
设计模型之抽象工厂模式(含UML完整实例)
设计模型之抽象工厂模式1.抽象工厂模式1.1 定义与特点 用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)。 使用抽象工厂模式一般要满足以下条件: 1).系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。 2).系统一次只可能消费其中某一族产品,即同族的产品一起使用。 抽象工厂模式除了具有工厂方法模式的优点外,其他主要优点如下:...原创 2020-04-09 18:52:01 · 7597 阅读 · 1 评论 -
设计模型之工厂模式(含UML完整实例)
设计模型之工厂模式1.工厂模式1.1 定义 一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。 工厂方法模式的主要优点有:用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则; 工厂方法模式的缺点是:每增加一个产品就要增加一个具体产...原创 2020-04-09 13:27:01 · 5014 阅读 · 0 评论 -
设计模型之原型模式(含UML完整实例)
设计模型之原型模式1.原型模式1.1 定义 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。1.2 模...原创 2020-04-08 19:24:19 · 4493 阅读 · 0 评论 -
深拷贝和浅拷贝(完整实例)
深拷贝和浅拷贝 1、浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。 2、深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。 3、浅拷贝(clone)示例代码public class Student implements Cloneable{ private String name; pu...原创 2020-04-07 18:18:39 · 1412 阅读 · 0 评论 -
java序列化(完整实例)
java序列化一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服...原创 2020-04-07 18:08:13 · 1486 阅读 · 0 评论 -
设计模型之单例模式(含UML完整实例)
设计模型之单例模式1.单例模式1.1 定义 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。 在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序...原创 2020-04-07 15:57:32 · 6382 阅读 · 0 评论 -
java是否可以在定义类时创建类对象
java是否可以在定义类时创建类对象 有如下例子:public class A { private A aa = new A();}public class Test { public static void main(String[] args) { A a = new A(); /* Exception in threa...原创 2020-04-07 15:30:16 · 1203 阅读 · 0 评论 -
设计原则之合成复用原则(含UML类图的完整例子)
设计原则之合成复用原则1.合成复用原则1.1 定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。 如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用...原创 2020-04-07 13:24:47 · 7597 阅读 · 2 评论 -
设计原则之单一职责原则(完整例子)
设计原则之单一职责原则1.单一职责原则1.1 定义 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。1.2 问题由来 类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。public class Animal { public void breathingAir(String...原创 2020-04-07 11:39:54 · 2642 阅读 · 0 评论 -
设计原则之接口隔离原则(含UML类图的完整例子)
设计原则之接口隔离原则1.接口隔离原则1.1 定义 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪。接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活。或许看到接口隔离原则这样的定义很多人会觉得和单一职责原则很像,但是这两个原则还是有着很鲜明的区别。接口隔...原创 2020-04-07 11:12:20 · 2784 阅读 · 0 评论 -
设计原则之最少知识原则(实例加UML完整例子)
设计原则之最少知识原则1.最少知识原则1.1 定义 迪米特法则又叫最少知道原则:一个对象应该对其他对象保持最少的了解。 迪米特法则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的publi...原创 2020-04-07 09:48:13 · 731 阅读 · 0 评论 -
设计原则之依赖倒置原则(实例加UML完整例子)
设计原则之依赖倒置原则原创 2020-04-06 22:28:19 · 5765 阅读 · 0 评论 -
设计原则之里氏替换原则(实例加UML完整例子)
里氏替换原则1.定义 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 子类中可以增加自己特有的方法1.2 UML类图1.3 设计背景 有时候父类有多个子类,但在这些子类中有一个特例,如果不遵循里氏替换原则,重写了父类的方法,虽然实现了功能,会整个继承体系的可复用性会比较差,比如B继承了A,B重写了A的fun1()方法,C又继承了B,这个时候C使用fun1()方法,但使...原创 2020-04-03 14:15:06 · 1942 阅读 · 0 评论 -
Java的接口和抽象类(实例加UML完整例子)
Java的接口和抽象类1.抽象类1.1 语法 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求...原创 2020-04-03 11:13:34 · 3748 阅读 · 0 评论 -
设计原则之开闭原则(实例加UML完整例子)
java设计原则1.开放-封闭原则1.1 定义 对拓展开放,对修改关闭:比如当某个业务增加,不是在原类增加方法,而是增加原类的实现类1.2 UML类图1.3 使用场景2.开放-封闭原则...原创 2020-04-03 10:02:00 · 6031 阅读 · 0 评论 -
java/web如何获取资源文件
java如何获取资源文件 java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果。 获取资源文件的方法有: 1.getResource()返回:URL 2.getResourceAsStream () 返回的是inputstream,需要定义一个InputStream接收...原创 2020-03-30 00:20:05 · 405 阅读 · 0 评论 -
MANIFEST.MF入门解释
MANIFEST.MF入门解释 1.什么是 JAR 文件包? JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST...原创 2020-03-24 15:55:56 · 733 阅读 · 0 评论 -
java8 stream(完整例子)
java8 stream 学习 Stream 之前必须先学习 lambda 的相关知识,学习lambda又涉及到匿名内部类,所以这里先介绍匿名内部类,在介绍lambda表达式,最后介绍java8 新特性 Stream1.匿名内部类 new 实现接口() |父类构造器(实参列表) { //匿名内部类的类体部分 }1.1 父类构造器方式实现匿名内部类public class...原创 2020-03-19 22:58:37 · 259 阅读 · 0 评论 -
web中页面中的相对路径和绝对路径
web中的相对路径和绝对路径 以/WebTest这个web项目为案例,项目目录结构如下: servlet代码如下:public class WebServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = -4093570687653063628L; @Over...原创 2020-03-14 21:04:18 · 547 阅读 · 0 评论 -
forward内部跳转和redirect重定向跳转区别
forward内部跳转和redirect重定向跳转区别1.使用绝对路径时写法不同 forward跳转是使用http://localhost:端口号/项目名/为根本地址,在它的基础上计算绝对路径。 &emsp以访问一个项目根目录下的pages目录下的jsp页面为例 request.getRequestDispatcher("/pages/registerI...原创 2020-03-13 15:39:56 · 427 阅读 · 0 评论 -
Java8内置的函数式接口(完整例子)
Java8内置的函数式接口 什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的。从Java8开始引入了函数式接口,其说明比较简单:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 java8引入@FunctionalInterface 注解声明该接口是一个函数式接口。1、语法定义@Function...原创 2020-03-11 17:59:42 · 1028 阅读 · 0 评论 -
java DecimalFormat基本使用方法
DecimalFormat基本的用法:1:保留小数后几位,符合四舍五入原则:这里有两种方式(“00.00”)或者是(##.##) 两者相同的地方如果数字多了,就切掉,但只切小数的末尾,整数不能切; 二者的区别就是取不取0的问题,显然前者用#不会取零,还有就是补不补0的问题,比如我想输出03,如果用(“##“) 那就只会输出3,而用(”00”)就会补上0了 double a=1...原创 2020-03-11 15:32:23 · 933 阅读 · 0 评论 -
java set集合(完整例子)
java set集合 set集合与Collection基本相同,没有提供任何额外的方法,实际上set就是Collection,只不过是行为略有不同(set不允许有相同元素) 会介绍set的3种实现类HashSet、TreeSet、EnumSet1.HashSet HashSet 具有以下特点: 1. 不能保证元素的排列序列,顺序可能与添加的顺序不同 2. 不是同步的,假设...原创 2020-03-10 15:42:06 · 1152 阅读 · 0 评论