开发那些事

设计模式

2022-02-21  本文已影响0人  林几许

常见的设计模式有哪些?

常见的工厂模式,代理模式,模板方法模式,责任链模式,单例模式,包装设计模式,策略模式等。
手写代码用的多的一般是模板方法模式,责任链模式,策略模式,单例模式。
Spring中有工厂模式,代理模式。

单例模式
//饿汉式
class Singleton{
        private static Singleton  singleton = new Singleton();
        provate Signleton(){}
        provate static Singleton getInstance(){
                return singleton;
        }
}
//简单懒汉式(方法加锁)
class Singleton{
        private static Singleton  singleton = null;
        provate Signleton(){}
        provate static synchronized Singleton getInstance(){
                if(singleton == null){
                    singleton = new Singleton();
                }
                return singleton;
        }
}
//DCL懒汉式
class Singleton{
        //这里要加volatile修饰,防止指令重排导致线程不安全的问题
        private static  volatile Singleton  singleton = null;
        provate Signleton(){}
        provate static synchronized Singleton getInstance(){
                if(singleton == null){
                  synchronized (Singleton.class){
                    if(singleton == null){
                       singleton = new Singleton();
                    }
                  }
                }
                return singleton;
        }
}
//静态内部类 懒汉式
class Singleton{
        provate Signleton(){}
        //使用静态内部类的方式来实现懒加载(一定线程安全)
        provate static class lazyHolder{
              private static  final Singleton  singleton = new Singleton();
        }
        provate static final Singleton getInstance(){
              return lazyHolder.singleton;
        }
}
//枚举
enum Singleton{
    SINGLETON,
}
模板方法模式
//模板方法模式
public boolean handle(Task task){
    //messyCodeCheck是统一逻辑处理方法
    if(messyCodeCheck(task)){
        return doHandle(task)
    }else {
        return false  
    }
}

//doHandle由子类实现
public abstract boolean doHandle(Task task);
代理模式

Spring的Aop就是代理

Spring使用的常见设计模式
上一篇下一篇

猜你喜欢

热点阅读