
Java
JustToFaith
美好的一天,从Hello World开始!
展开
-
Java的几种引用
Java的几种引用Java 的引用类型有四种,分别是强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference),这四种引用类型的强度依次降低。引用的传统定义如果reference类型的数据中存储的数值代表的是另一块内存的起始地址,就称该reference数据是代表么某块内存、某个对象的引用。Java中的四种引用强引用强引用是最传统引用的定义,是指在程序代码中普遍存在的引用赋值,即原创 2020-12-07 19:25:20 · 360 阅读 · 1 评论 -
Iterator和 Iterable接口源码阅读
Iterator和 Iterable接口源码阅读IteratorIterator属于 java 集合框架,是一个集合上的迭代器,它在 Java 集合框架中代替了枚举。但是它又与枚举有两点不同:迭代器允许调用者在迭代期间使用定义明确的语句从基础集合中删除元素。方法名称进行了改进。接口的定义如下:public interface Iterator<E> { boolean hasNext(); E next(); default void remove(原创 2020-11-18 22:22:48 · 957 阅读 · 0 评论 -
设计模式之简单工厂模式、工厂模式和抽象工厂模式
简单工厂模式、工厂模式和抽象工厂模式1. 简单工厂模式简单工厂模式属于创建型模式,是工厂模式的一种。简单工厂模式定义了一个创建对象的类,由这个类来封装实例化对象的行为。它是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式中最简单使用的模式。简单工厂模式的三个角色Factory(工厂角色) :简单工厂模式的核心,它负责实现创建所有实例的内部逻辑,根据调用时传入的参数,从而创建不同的对象。Product(抽象产品角色) :简单工厂模式中所创建所有对象的父类,负责描述所以产品原创 2020-10-29 00:05:35 · 2107 阅读 · 0 评论 -
设计模式之职责链模式
职责链模式职责链模式(Chain of Responsibility Pattern)又叫责任链模式,属于行为型模式。它为请求创建了一个接受者对象的链,每个接受者都包含对另一个接受者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接受者,依次类推。职责链模式的三个角色Handler(抽象处理者角色):抽象的处理者定义了一个处理请求的接口, 同时含有下一个 Handler。ConcreteHandler(具体处理者角色):是具体的处理者, 处理它自己负责的请求, 可以访问它的后继者原创 2020-10-19 23:37:56 · 2407 阅读 · 0 评论 -
设计模式之策略模式
策略模式策略模式(Strategy Pattern)属于行为型模式。它把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体 类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略)。策略模式的三个角色Context(环境类):也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。Strategy(抽象策略):通常情况下为一个接口,当各个原创 2020-10-19 00:05:42 · 2449 阅读 · 0 评论 -
设计模式之状态模式
状态模式状态模式(State Pattern)属于行为模式。它主要用来解决对象在多个状态转换时,需要对外输出不同行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态发生改变时,允许改变其行为,这个对象看起来像是改变了类。状态模式的三个角色State(抽象状态角色):定义一个接口,封装与Context的一个特定状态相关的行为。ConcreteState(具体状态角色):每一个子类实现一个与Context的一个特定状态相关的行为。Context(环境角色):用于维护Stat原创 2020-10-18 16:37:40 · 2474 阅读 · 0 评论 -
设计模式之解释器模式
解释器模式解释器模式(Interpreter Pattern)属于行为模式,它定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式的四个角色AbstractExpression(抽象表达式):声明一个抽象的解释操作,这个方法为抽象语法树中所有的节点所共享。TerminalExpression(终结符表达式):实现与文法中的终结符相关的解释操作。比如 c = a + b,其中 a 和 b 就是终结符,而对应 a 和 b 的解释器就是终结符原创 2020-10-12 16:33:00 · 2553 阅读 · 2 评论 -
设计模式之备忘录模式
备忘录模式备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern),属于行为型模式。备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。设计模式中的备忘录模式可以类比现实中的备忘录。现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意 见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某 种状态,或者某些数据,当要做回退时,可以原创 2020-10-10 19:32:11 · 2539 阅读 · 3 评论 -
设计模式之中介者模式
中介者模式中介者模式(Mediator Pattern)属于行为型模式,它用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。比如 MVC 模式,C(Controller 控制器)是 M(Model 模型)和 V(View 视图)的中介者,在前后端交互时起 到了中间人的作用。中介者模式的四个角色Mediator(抽象中介者):定义了同事对象到中介者对象之间的接口。ConcreteMediator(具体中介者):具体的中介原创 2020-10-08 22:15:33 · 2633 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式观察者模式(Observer Pattern)也叫发布-订阅(Publish/Subscribe)模式,是属于行为型模式。观察者模式定义了一种对象间多对一的依赖关系,使得当被观察者状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的四个角色Subject(抽象被观察者角色): 这是一个抽象类或接口,定义了对观察者集合的操作,例如注册观察者、删除观察者和通知更新观察者信息等。ConcreteSubject(具体被观察者角色): 具体观察者角色有自己的属性和方法,并实现了抽象被原创 2020-10-03 22:19:56 · 2625 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式迭代器模式(Iterator Pattern)是常用的设计模式,属于行为模式。迭代器模式提供了一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即不暴露其内部的结构。如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍 历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器的四个角色Iterator(抽象迭代器):迭代器接口,有hasNext()、nex原创 2020-10-02 22:27:26 · 2724 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式访问者模式(Visitor Pattern)是属于行为模式,它封装了一些用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些操作的新操作。访问者模式的基本原理是:在被访问的类里加一个对外提供接待访问者的接口。主要将数据结构与数据分离,解决数据结构和操作耦合性的问题。访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作"污染"这些对象的类,可以选用访问者模式解决。观察模式的五个角色Visitor(抽象访原创 2020-09-28 23:48:53 · 3073 阅读 · 0 评论 -
设计模式之命令模式
命令模式命令模式(Command Pattern)又称为行动模式或交易模式,它是属于对象的行为模式。命令模式把一个请求或操作封装为一个对象,以便使用不同的参数来表示不同的请求(即命名),同时命令模式也支持撤销操作。命令模式的核心是引入了一个命令类,通过命令类来降低发送者和接受者之间的耦合,让对象之间的调用关系更加灵活,实现解耦。命令模式的四个角色命令角色(Command):这是一个抽象类或者接口,所有的命令都在这里。具体命令角色(ConcreteCommand):定义一个接受者对象并与动作绑定,原创 2020-09-26 00:05:49 · 2974 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式执行。简单的说,模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构,就可以重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。模板方法模式的两个角色AbstractTemplate(抽象模板):抽象类,类中实现了模板方法(T原创 2020-09-22 23:37:32 · 2899 阅读 · 0 评论 -
设计模式之代理模式
代理模式代理模式为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理对象可以是远程对象、创建开销大的对象或需要安全控制的对象,代理模式有不同的形式,主要有三种:静态代理、动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口,它是属于动态代理的范畴)。静态代理静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的原创 2020-09-20 14:27:19 · 2847 阅读 · 0 评论 -
设计模式之享元模式
享元模式享元模式(FlyWeight Pattern)也叫蝇量模式,是运用共享技术有效地支持大量细粒度的对象,而这些对象都很相识,状态变化很小,可以是实现对象的多次复用。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对 象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。所以常用于系统底层开发,解决系统的性能问题。它是一种轻量级的对象结构型模式,一般结合工厂模式进行使用。享元模式的四个角色抽象享元(FlyWeight)角色:通常是一个接口或抽象原创 2020-09-16 22:35:45 · 2890 阅读 · 1 评论 -
设计模式之外观模式
外观模式外观模式(Facade Pattern),也叫过程模式。它为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外模模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用只需跟这个高层接口发生调用,而不需关心这个子系统的内部细节。外观模式的三个角色外观类(Facade): 为调用端提供统一的调用接口, 外观类知道哪些子系统负责处理请求,从而将调用端的请求代 理给适当子系统对象。调用者(Client): 外观接口的调用者。子系统的原创 2020-09-14 20:38:24 · 2771 阅读 · 0 评论 -
设计模式之组合模式
组合模式组合模式(Composite Pattern),又叫整体部分模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次,组合模式使得用户对单个对象和组合对象访问具有一致性,即:组合能够让客户以一致的方式处理个别对象以及组合对象。这种设计模式属于结构型模式。组合模式的三个角色抽象构件(Component)角色:这是组合中对象声明接口, 在适当情况下, 实现所有类共有的接口默认行为,用于访问和管理 Compone原创 2020-09-13 20:25:12 · 2879 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式装饰器(Decorator)模式又名包装(Wrapper)模式,是一种能动态将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰器模式也体现了开闭原则(ocp),是一种继承关心的替代方案。装饰器模式的四个角色**抽象构件(Component)角色:**给出一个抽象接口,已规范准备接受附加责任对象。**具体构件(ConcreteComponent)角色:**定义一个将要接受附加责任的类。**装饰(Decorator)角色:**持有一个构件(Component)对象的实例,并定原创 2020-09-12 20:16:23 · 2772 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。桥接模式是一种结构型设计模式,它基于类的最小设计原则,通过使用封装、聚合及集成等行为让不同类承担不同的职责。它主要的特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。桥接模式的四个角色Abstraction:定义抽象接口,拥有一个Implementor类型的对象引用RefinedAbstraction:扩展Abstraction中的接口原创 2020-09-11 10:34:05 · 2799 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式基本介绍适配器模式(Adapter Pattern)是将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。适配器模式属于结构型模式,主要分为三类:类适配器模式、对象适配器模式、接口适配器模式适配器模式的三个角色Target:目标类,最终要从Adapter输出的类。Adapter:适配器类Adaptee:被适配的类类适配器模式类适配器模式主要是通过 Adapter类继承Adapt原创 2020-09-10 11:31:56 · 2755 阅读 · 0 评论 -
Java 泛型
Java 泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型信息不会进入到运行时阶段。编译器有效泛型的三种方式:泛型类、泛型接口、泛型方法泛型类定义格式:修饰符 class 类名<代表泛型的变量> { }例如,API中的ArrayList集合:class ArrayList<E>{ p原创 2020-09-08 12:46:35 · 2869 阅读 · 0 评论