Java IO

一、概览

Java 的 I/O 大概可以分成以下几类:

  • 磁盘操作:File
  • 字节操作:InputStream 和 OutputStream
  • 字符操作:Reader 和 Writer
  • 对象操作:Serializable
  • 网络操作:Socket
  • 新的输入/输出:NIO

二、磁盘操作

File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。

阅读更多

Java 并发

一、使用线程

有三种使用线程的方法:

  • 实现 Runnable 接口;
  • 实现 Callable 接口;
  • 继承 Thread 类。

实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。

实现 Runnable 接口

需要实现接口中的 run() 方法。

阅读更多

享元模式

一、前言

享元模式解决的问题是:共享对象

享元模式(FlyweightPattern)是池技术的重要实现方式

二、基本概念

1.定义

使用共享对象可有效地支持大量的细粒度的对象

阅读更多

解释器模式

一、前言

解释器模式解决的问题是:语法分析

解释器模式(InterpreterPattern)是一种按照规定语法进行解析的方案,在现在项目中使用较少.

二、基本概念

1.定义

给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

阅读更多

Java 中只有值传递

形参&实参

方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为:

  • 实参(实际参数,Arguments):用于传递给函数/方法的参数,必须有确定的值。
  • 形参(形式参数,Parameters):用于定义函数/方法,接收实参,不需要有确定的值。
1
2
3
4
5
6
7
String hello = "Hello!";
// hello 为实参
sayHello(hello);
// str 为形参
void sayHello(String str) {
System.out.println(str);
}
阅读更多

状态模式

一、前言

状态模式解决的问题是:状态变更引起行为变更

二、基本概念

1.定义

当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。

Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.

阅读更多

访问者模式

一、前言

访问者模式解决的问题是:功能集中化

二、基本概念

1.定义

封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.

阅读更多

备忘录模式

一、前言

备忘录模式解决的问题是:游戏存档

通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法。(备份与恢复)

二、基本概念

1.定义

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。(即备份恢复)

阅读更多

门面模式

一、前言

门面解决的问题是:统一访问

门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式

二、基本概念

1.定义

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

阅读更多

组合模式

一、前言

组合模式解决的问题是:树形结构(部分与整体的层次结构)

组合模式(Composite Pattern)也叫合成模式,有时又叫做部分-整体模式(Part-Whole),主要是用来描述部分与整体的关系,

二、基本概念

1.定义

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

阅读更多