心心念清明节去玉渊潭玩,结果没预约到票。太惨了吧我。有去的朋友给失丶忆晒几张照片吧
设计模式
如平时一样,早上早到工位一小时看看书,瞎整理一会。噢力给,今天4.1愚人节
失丶忆:x哥,你这会有空吗,我有个事
x哥:你讲
失丶忆:我想辞职
x哥:准备准备交接工作,交接完走的时候给我说一声
ps: 啪啪啪,瞎意淫什么,看看设计模式吧
- 设计模式常用的七大原则
- 单一职责原则
- 接口隔离原则
- 依赖倒转原则
- 里氏替换原则
- 开闭原则 ocp
- 迪米特法则
- 合成复用原则
以上是设计模式的依据,还是很有必要去了解以及掌握,我就不一一列出它们的定义了。
我们来重点说一下迪米特法则:也称最少知道原则,一个对象应该对其它对象保持最少的了解,这样有利于维护她们之间的关系。呸,渣男。
回归单例设计模式
- 饿汉式(静态常量实现。可用)
class Singleton{
// 私有化构造方法
private Singleton(){};
private final statis Singleton instance = new Singleton();
// 向外提供获取实例的方法
public static Singleton getInstance() {
return instance;
}
}
优点:类加载的时候就实例化,避免了线程同步的问题
缺点:可能会造成内存浪费,没有达到懒加载的效果
- 饿汉式(静态代码块。可用
class Singleton {
private final static Singleton instance;
private Singleton(){};
static {
instance = new Singleton();
}
public static Singleton getInstance() {
return instance;
}
}
优缺点:和静态常量一样,只是写法不同。
- 懒汉式(线程不安全,慎用)
class Singleton {
private static Singleton instance;
private Singleton(){};
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
优点:比起上面的饿汉式,起到了懒加载的效果
缺点:线程不安全,实际开发中不要使用
- 懒汉式(加锁,线程安全)
class Singleton{
private Singleton(){};
private static Singleton instance;
public static synchronized getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
优缺点:加锁实现了线程安全问题,但是效率较低。
- 懒加载(双重检查,推荐使用)
class Singleton{
private Singleton(){};
private static volatile Singleton instance;
public static Singleton getInstance() {
if(instance == null) {
synchronized(Singleton.class) {
if(instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
优点:懒加载且线程安全,推荐使用哦
- 静态内部类
class Singleton {
private Singleton(){};
private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonInstance.INSTANCE;
}
}
优点:线程安全,懒加载,推荐使用 利用静态内部类的特点实现
- 枚举
public enum EnumSingleton {
INTANCE;
public EnumSingleton getInstance() {
return INSTANCE;
}
}
优点:推荐使用