设计模式

作者: 林几许 | 来源:发表于2022-02-21 07:50 被阅读0次

常见的设计模式有哪些?

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

单例模式
  • 饿汉式,简单懒汉式(在方法声明时加锁),DCL双重检验加锁(进阶懒汉式),静态内部类(优雅懒汉式),枚举。
    所谓懒汉式,是指还没被用到,就直接初始化了对象,所谓懒汉式指的是等用到的时候,才进行初始化。
//饿汉式
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使用的常见设计模式
  • Spring IOC容器可以理解为应用了工厂模式,通过ApplicationContext或beanFactory去获取对象
  • Spring的对象默认都是单例的
  • Spring AOP用了代理模式
  • Spring的事务处理器应用了模板方法模式
  • Spring的事件驱动模型用了观察者模式

相关文章

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 第1章 设计模式概述

    一、设计模式的概念 二、设计模式的历史 三、设计模式的要素 四、设计模式的分类 ■ 创建型设计模式 ■ 结构型设计...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

网友评论

    本文标题:设计模式

    本文链接:https://www.haomeiwen.com/subject/cvrvlrtx.html