一、工厂模式
1)抽象类:Animal 动物类 (基类)
2)提供一些子类,完成方法重写:eat(){} sleep(){}
3)提供一个接口 :
Factory
public Animal createAnimal() ;
DogFactory /CatFactory具体的子实现类实现对象的创建
优点:具体的动物创建,交给类工厂类来实现 (面向接口编程),便于功能维护(代码维护)
弊端:代码量非常大
如果有新的类中增加,那么还必须提供对应具体的工厂类创建当前类实例
abstract class Animal{}
class Cat extends Animal{}
class Dog extends Animal{}
interface Factory{
Animal createAnimal() ;
} //工厂接口
//具体的工厂类
class DogFactory implements Factory{
public Animal createAnimal(){
return new Dog() ;
}
}
class CatFactory implements Factory{
public Animal createAnimal(){
return new Cat() ;
}
}
二、单例模式
分为两种
1.饿汉式
1)构造方法私有:保证外界不能直接创建当前类对象
2)在当前类的成员位置:创建当前类实例
3)提供一个静态的功能,返回值就是当前类本身(需要当前类的实例)
//饿汉式:不会出现问题的单例
class Student{
//在成员位置创建静态实例变量
private static Student s = new Student() ;
//构造方法私有化:目的外界不能使用它创建实例
private Student(){}
//提供静态的公共的访问,返回值就是当前类本身
public static Student getInstance(){
return s ;
}
}
//jdk提供典型的类:Runtime:就是饿汉式
2.懒汉式:可能出现问题的一种单例模式
1)构造方法私有化
2)在当前成员变量的位置声明变量:数据类型就是当期类 (私有的,静态的)
3)提供静态功能,返回值还是当前类本身,
判断如果当前没有给当前类型变量为null,直接new 当期类的实例
如果不为null,就返回当前类的变
//懒汉式:可能出现线程安全问题的单例模式
class Teacher{
//在成员位置声明当前类型的一个变量t
private static Teacher t ;
//构造方法私有
private Teacher(){}
//提供,静态功能,返回值当前类本身
public synchronized static Teacher getInstance(){ //静态的同步方法 (锁对象:类名.class):解决安全问题
if(t == null){//需要使用的时候才创建对象
t = new Teacher() ;
return t
}
return t ;
}
}
三、File类(文件和目录(文件夹)路径名的抽象表示)
File 文件和目录(文件夹)路径名的抽象表示。
构造方法
File(String pathname) :参数就是指定的路径/如果没有指定路径(默认是在当前项目下)
通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的 File实例。
File(String parent, String child):参数1:父目录地址 参数2:具体的子文件地址
成员方法:
创建/删除/重名
public boolean createNewFile() throws IOException :表示创建文件 :如果不存在,则创建
public boolean mkdir():创建文件夹,如果不存在,则创建;否则就返回false
public boolean mkdirs():创建多个文件,如果父目录不存在,则创建
public boolean delete():删除文件或者文件夹(如果删除文件夹,文件夹必须为空目录)
public boolean renameTo(File dest):重命名
参数传递的修改的File对象
判断功能
public boolean canRead()是否可读
public boolean canWrite()是否可写
public boolean exists():是否存在
public boolean isFile():是否是文件
public boolean isDirectory():是否是文件夹
public boolean isHidden():是否隐藏
高级获取功能:
public long length()
public String getName():获取抽象路径 名所表示的文件或者目录的名称
public File[] listFiles():获取某个目录下的所有的文件以及文件夹的File数组
public String[] list():获取某个抽象路径名所表示的文件以及目录的字符串数组
四、递归
方法递归:方法调用方法本身的一种现象(不是方法嵌套方法)
前提条件
1)必须有一个成员方法
2)必须有方法递归的出口条件(结束条件),如果没有出口条件,就是死递归...
3)还存在一定的规律
注意事项:构造方法不存在递归
五、IO流
*分类
1)流的方向划分:
输入流: 读数据
输出流: 写数据
2)流的类型划分:
字节流:
字节输入流
InputStream
FileInputStream