文章目录
java设计模式
设计模式常用的七大原则:
- 单一职责原则;
- 接口隔离原则;
- 依赖倒转原则;
- 里氏替换原则;
- 开闭原则ocp;
- 迪米特法则;
- 合成复用原则;
设计模式概述
1:设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
2:设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂度。
设计模式分为三种类型,共23种
- 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式;
- 结构性模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式;
- 行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)。
一、单例模式
单例模式: 采取一定的方法保证一个类仅有一个实例,该类负责创造自己的唯一实例,这个类提供了一种访问其唯一实例的方式,可以直接访问,不需要实例化该类对象。
特点: ①只有一个实例;
②自我实例化;
③提供全局访问点(静态方法)直接用类调用方法,便可获得该类的唯一实例。
1、饿汉模式(静态常量)
步骤:
- 构造器私有化;
- 类的内部创建对象;
- 向外暴露一个静态的公共方法:getInstance
类加载时就初始化
public class Singleton{
//1:构造器私有化,外部能new
private Singleton(){
}
//让构造函数为private,这样该类就不会被实例化
//2:本类内部创建对象实例
private static Singleton instance = new Singleton();
//3:提供一个共有的静态方法,返回实例对象
public static Singleton getInstance(){
return instance;
}
- 这种方式在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快;
- 这种方式基于类加载机制避免了多线程的同步问题,但是也不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance显然没有达到懒加载的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费。
2、饿汉模式(静态代码块)
public class Singleton{
//1:构造器私有化,外部能new
private Singleton(){
}
//2:本类内部创建对象实例
private static Singleton instance;
static{
//在静态代码块中,创建单例对象
instance = new Singleton();
}
//3:提供一个共有的静态方法,返回实例对象
public static Singleton getInstance(){
return instance;
}
- 这种方法和上面的方式其实类似,只不过将类实例化的过程放在了静态代码块中,也就是类装载的时候,就执行静态代码块中的代码,初始化类的实例。有缺点和上面是一样的;
- 结论,可以用,但有可能造成内存浪费。
3、懒汉模式(非线程安全)
public class Singleton{
private static Singleton instance;
//让构造函数为private,这样该类就不会被实例化