自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 行为型--访问者模式

概念访问者模式把数据结构和作用于结构上的操作解耦合,使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。数据结构是指包含许多对象的对象结构。访问者类定义了对象被访问时的具体操作,当对象接收了一个该类访问者时,就会执行这个操作。所以如果需要在访问同一对象时执行不同操作,就需要添加新的访问者类。...

2019-05-26 19:47:22 339

原创 行为型--中介者模式

概念用来降低多个对象和类之间的通信复杂性。该模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,仅仅只需要把一个对象的请求交给它的中介者即可,从而使其耦合松散,而且可以独立地改变它们之间的交互。优点:降低了类的复杂度,将一对多转化成了一对一。(一个对象与多个对象交互变成与一个中介者交互)各个类之间的解耦。符合迪米特原则。缺点:中介者类会很庞大,变得复...

2019-05-26 17:34:45 171

原创 行为型--解释器模式

概念给定一个语言,定义它的文法的一种表示。定义一个解释器,这个解释器可以表现出该特定表示,使用该表示来解释语言中的句子。就是说,用解释器来解释我想要解释的那些语句。优点:可扩展性比较好,灵活。增加了新的解释表达式的方式。易于实现简单文法。缺点:可利用场景比较少。对于复杂的文法比较难维护。解释器模式会引起类膨胀。解释器模式采用递归调用方法。 举例pu...

2019-05-26 16:42:48 162

原创 行为型--状态模式

标题当对象的内部状态改变时,使其行为也随着改变。优点:将所有与某个特定状态有关的行为封装到一个类中,并且将属于不同状态的行为分割开。使得对象的行为跟随状态变化而变化。允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块。状态对象可以被多个环境对象共享,从而减少系统中对象的个数。缺点:会增加系统类和对象的个数。状态模式的结构与实现都较为复杂,如果使用不当将导致程序...

2019-05-24 22:11:21 155

原创 行为型--备忘录模式

标题保存一个对象的某个状态,以便在适当的时候恢复对象到那个状态。源类A中决定需要备份的属性,备忘录类B是用来存储A的需要备份的内部状态,类C用来存储多个备忘录,且只能存储,不能修改等操作。优点:给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。实现了信息的封装,使得用户不需要关心状态的保存细节。缺点:消耗资源。如果类的成员变量过多,势必会占用比较...

2019-05-24 21:03:31 110

原创 行为型--命令模式

概念将一个请求封装成一个对象(Command),从而使你可以用不同的请求对客户进行参数化。目的是达到命令的发出者和执行者之间解耦,实现请求和执行分开。三个角色:received:行为实现者,真正的命令执行对象。Command:命令类,含有具体接收者成员引用。invoker: 行为请求者,利用命令对象成员,为接收者发布命令。优点:降低了系统耦合度。 分离行为请求者与行为实现者。...

2019-05-24 20:42:59 138

原创 行为型--责任链模式

概念为请求创建了一个接收者对象组成的链,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。请求发出者并不清楚最终是哪个对象处理的该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。优点:降低耦合度。对请求的发送者和接收者进行了解耦。对象不需要知道链的结构。增强给对象指派职责的灵活性。通过改变...

2019-05-24 19:09:41 135

原创 行为型--迭代器模式

概念顺序访问集合对象的元素,且不需要知道集合对象的底层表示。优点:在不暴露集合的内部结构情况下,可以让外部代码透明地访问集合内部的数据。将存储数据和遍历数据功能分开,简化了集合类。在同一个集合上可以定义多种遍历方式。在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,...

2019-05-24 17:54:42 184

原创 行为型--观察者模式

概念当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并被自动更新。定义了对象间的一种一对多的依赖关系。优点:观察者和被观察者是抽象耦合的。建立一套触发机制,实现状态的同步更新。缺点:如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。...

2019-05-24 17:36:14 96

原创 行为型--模板模式

概念用一个抽象类定义一些方法作为模板,并将其中某些方法的实现推迟到子类中,子类可以不改变抽象类的结构即可重定义类中的某些特定步骤。之后用户通过调用抽象类方法,实现对子类方法的调用。优点:封装不变部分,扩展可变部分。便于扩展和重定义。提取公共代码,便于维护,复用。行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。&nb...

2019-05-24 16:39:31 97

原创 行为型--策略模式

概念定义一系列算法,并将每个算法封装起来,使他们可以相互替换,外部用户只需要决定用哪个算法即可,客户端对象的行为可以根据算法(策略)的改变而改变。而算法的变化却不会影响到使用算法的客户。换言之,客户需要使用多种算法,但算法的实现不能每次都写在客户端,也不能在客户端去扩展。优点:算法可以自由切换。避免在客户端使用多重条件去判断要执行的算法是哪个。扩展性良好。算法的扩展不影响客户。...

2019-05-24 16:02:20 150

原创 设计模式--总览

概述设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。设计模式的六大原则...

2019-05-24 12:19:13 104

原创 结构型--享元模式

概念

2019-05-24 11:40:03 92

原创 创建型--建造者模式

概念

2019-05-23 23:24:48 98

原创 创建型--桥接模式

概念将抽象部分与实现部分分离,使它们都可以独立的通过导出子类的方式扩充。优点: 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。举例public class User1 { public static void main(String[] args)...

2019-05-21 22:34:25 146

原创 结构型--外观模式

概念 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。(其实就是子系统中的类共同使用时太麻烦,客户不能每次为了完成这个功能都写一遍重复的代码,所以把代码抽象出来,封装到一个类的方法中)优点:减少客户与子系统之间的耦合度。客户在利用子系统实现某功能时,无需使用具体的子系统组件,只需要使用这个外观界面。缺点:不符合开闭原则,如果要...

2019-05-18 15:22:01 99

原创 结构型--代理模式

详见 代理

2019-05-18 14:21:23 81

原创 结构型--装饰器

概念

2019-05-17 23:42:52 67

原创 结构型--组合模式

概念

2019-05-17 22:21:42 89

原创 结构型--适配器

概念配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式是将某个类的接口转换成客户端期望的另一个接口表示,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。优点:可以让任何两个没有关联的类一起工作。 (比如接口的实现类与它持有的对象合作)提高了类的复用(不用总写重复代码)。缺点:4. 过多地使用适配器,会让系统非常零乱,不易把握整体。比如,...

2019-05-17 22:07:28 120

原创 创建型--原型模式

概念将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。方法见...

2019-05-15 22:18:38 66

原创 创建型--单例模式

概念保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。该模式涉及到一个单一的类,该类自己负责创建自己的对象,同时确保只能有单个对象被创建。同时这个类提供了一种访问该唯一对象的方式,可以直接访问,不需要对类进行实例化。注意:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须为所有其他对象提供这一实例的访问入口。优点:在内存里只有一个实例,减少了内存的开...

2019-05-15 20:57:13 85

原创 创建型--抽象工厂模式

概念工厂模式有一个问题:类的创建依赖工厂类。也就是说,如果想要扩展程序,产生更多种类的实现该同一接口的对象,必须对工厂类进行修改,这违背了闭包原则。为解决这个问题,使用抽象工厂模式:创建多个工厂类。这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。工厂模式:一个工厂类用来创建多个对象。抽象工厂模式:多个工厂类用来创建多个对象。一种产品由一种对应的工厂类来创建。...

2019-05-15 16:50:28 86

原创 创建型--工厂模式

概念工厂模式分为三种:普通工厂方法模式、多个工厂方法模式、静态工厂方法模式。建立一个工厂类,对实现了同一接口的一些类提供创建对象的方法。利用该模式创建对象时,不会对客户端暴露创建逻辑,创建时将返回所有对象共同的接口来指向新创建的对象。工厂类用来创建具体产品。优点:屏蔽对象的具体创建逻辑,调用者只关心用来创建对象的工厂类(及类中方法)。扩展性高,如果想增加一个产品,只要在工厂类中修改...

2019-05-15 16:35:49 104

原创 String与基本类型的转换

String转int法1、2:利用包装器类其余包装器用法类似:String s1 = "128";int a1 = Integer.parseInt(s1); //法1//相当于new Integer(Integer.parseInt(s1)).intValue();int a2 = Integer.valueOf(s1).intValue(); //法2int转St...

2019-05-13 11:17:40 510

原创 对象复制

为什么要克隆 克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”时就需要clone方法了。那么把这个对象的临时属性一个一个的赋值给新new的对象呢?一来麻烦,二来,clone是一个native方法,在底层实现的,快。 常见的Object a=new Object();Object b;b=a;这种形式的代码复制...

2019-05-13 00:43:38 98

原创 代理

概要在执行一个功能函数时,经常需要在其中写入与功能不是直接相关但很有必要的代 码,如日志记录,信息发送,安全和事务支持等,这些枝节性代码虽然是必要的,但只有将枝节性代码和功能性代码分开来才能降低耦合程度,去符合现代OO系统的要求。代理模式代理模式,目的是为某对象(委托类的对象)提供一个代理(对象),以控制外界对这个真实对象的访问。代理类负责为委托类实现消息的预处理,消息的过滤,消息的转发...

2019-05-12 22:54:59 160

原创 反射

RTTI 运行时类型识别(RTTI, Run-Time Type Identification)是Java中的机制,在Java运行时,RTTI维护类的相关信息。 多态是基于RTTI实现的。RTTI的功能主要是由Class类实现的。 Java中每个对象都有相应的Class对象,因此,我们随时能通过Class对象知道某个对象“真正”所属的类。无论我们对引用进行怎样的类型转换,对象本身所对应的C...

2019-05-12 01:50:26 100

原创 格式化

java.util.Formatter源码public final class Formatter implements Closeable, Flushable {}例1import java.util.Formatter;public class COM { public static void main(String[] args) { float x1= -12.3f...

2019-05-10 15:45:30 153

原创 异常(一)

描述 异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就将中断执行。 所有的异常类型最高的继承类是Throwable,Throwable下有两个子类:Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;Exception:指的是程序之中出现的错误信息,可以进行异常处理。 处理try { 可能出现异...

2019-05-09 11:33:29 206

原创 流--简述

概念Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java程序将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络)。之所以称为流,是因为这个数据序列在不同时刻可能代表不同的数据来源。分类1、按照输入输出的方向分,分为输入流和输出流。输入输出的参照对象是Java程序。输入到程序,或从程序...

2019-04-14 15:59:00 226

原创 序列化与反序列化

概念把对象的状态信息转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。在网络上传送对象的字节序列。从对象流中读取或输入的对象必须是支持 java.io.Serializable 或 java.io.Externalizable 接口的对象。readObject和...

2019-04-14 00:00:00 171

原创 Scanner部分用法

概念标准输出流:控制台窗口标准输入流: 源代码public final class Scanner implements Iterator<String>, Closeable {}

2019-04-12 17:35:22 356

原创 异常(二)

例题例一public class Test { public static void main(String[] args) { int i; try { i=9; System.out.println(i); }catch(Exception e) { e.printStackTrace(); } }}Output:9例二pu...

2019-04-12 17:15:09 95

原创 Java包与Import导入

标题包是Java语言提供的一种区别类名字命名空间的机制,它是类的一种文件组织和管理方式、是一组功能相似或相关的类或接口的集合。Java package提供了访问权限和命名的管理机制,它是Java中很基础却又非常重要的一个概念。一、包的作用1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的...

2019-04-12 12:06:35 46661 4

原创 数组

一维数组一、创建声明变量并分配内存int []arr = new int[5];或者:int []arr;arr = new int[5];说明:使用new关键字为数组分配内存时,整型数组中的各个元素的初始化值都为0。二、初始化int arr1[] = new int[]{1,2,3,4}; 或者:int arr2[] = {1,2,3,4}; 或者:a...

2019-04-11 22:27:47 241

原创 数值舍入问题

jdk 10.0.1 舍入模式部分源码两侧:是指0点左右的正负数值。以下舍去的要求皆为:只保留整数部分,舍去位是小数点后一位。package java.math;public enum RoundingMode{UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY}UP(两侧都远离...

2019-03-29 23:06:21 657

原创 assert断言

描述 是指程序执行到某行之后,断定其结果一定是我预期的结果,故在JDK 1.4之后增加assert关键字。 语法形式形式一assert condition ;这里condition是一个表达式。如果表达式的结果为true,那么断言为真,并且无任何行动,继续执行;如果表达式为false,则断言失败,后面的代码不会执行,只会抛出一个AssertionError对象。这个As...

2019-03-27 11:54:37 169

原创 字符串拼接

public class K { public static void main(String[] args) { //+ long start_01 = System.currentTimeMillis(); String a = "a"; for(int i = 0 ; i < 100000 ; i++){ ...

2019-03-26 15:02:57 7706

转载 多重继承的实现

利用接口此时实现接口,多半仅是在实现抽象方法。但如果我想使用多个类中的一些具体实现呢?利用内部类

2019-03-26 13:59:46 469

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除