设计模式:单例,模板

设计模式

设计模式是在大量实践中总结和理论化之后优选的代码结构,编程风格和思考问题的方式

像是经典的棋谱,不同棋局用不同棋谱,免去自己的再思考与摸索

单例设计模式

静态方法与静态属性的经典使用

单例:单个的实例

单例模式:采取一定方法保证在整个软件系统中,对于某个类,只能存在一个对象/实例;并且该类只提供一个取得其对象实例的方法

应用:有的类很占用资源,而且只要存在一个实例就够用了

JavaSE的java.lang.Runtime就是单例模式 饿汉式

2种方式:

饿汉式 着急,只要类被加载,这个唯一对象就会被创建

1 构造器私有化 防止直接new

2 类内部创建对象 (注意不是在下面的方法中创建而是直接在类中创建)

修饰符一般是private static 这里的static是为了下面的方法可以用

3 向外暴露一个静态的公共方法 是public static的,一般命名是getInstance,

可以调用多次getinstance,但是返回的是一个对象

优势;没有线程安全问题 对于getInstance方法

问题:不用这个对象,只是使用其中静态成分,也会创建,造成资源浪费(因为这个对象一般是重量级的)

懒汉式 不着急,使用到这个对象,才创建

1 构造器私有化

2 定义一个私有静态属性的对象=null(赋值时,另一个类会被加载,可以用static代码块验证)

3 提供一个公共的静态方法,可以返回对象 在其中判断属性是不是null, 是null,创建(调用构造器)返回对象,

不是null,直接返回对象

优势:不会有资源浪费

问题:有线程安全问题 对于getInstance方法

懒惰初始化的单例模式可以解决安全问题 --》jvm/类加载

双重检查锁实现单例模式可以解决安全问题--》jvm/JMM(方法本身没有问题,jvm有问题)

模板设计模式

抽象类最佳实现

需求:多个类,每个类做不同任务job,统计每个类完成任务的时间

解决:(这里还利用了动态绑定)

模板类(抽象方法job,普通方法jisuan调用job计算)(抽象类:防止创建父类对象)

每个类重写job方法就行,就不用管计算的方法了

相关推荐
我爱cope4 小时前
【Agent智能体26 | 多智能体-多智能体工作流】
人工智能·设计模式·语言模型·职场和发展
咖啡八杯11 小时前
【无标题】
java·后端·设计模式
折哥的程序人生 · 物流技术专研14 小时前
Java 23 种设计模式:从踩坑到精通 | 适配器模式 —— 让不兼容的接口也能一起工作
java·设计模式·面试·适配器模式·单一职责原则
布朗克16814 小时前
33 设计模式精讲
java·单例模式·设计模式
geovindu15 小时前
python: Generators Pattern
开发语言·python·设计模式·生成器模式
雨浓YN16 小时前
基于设计模式的Winform软件框架-01Xml\Log\Ini日志(单例模式+生产者消费者模式)
单例模式·设计模式
艾利克斯冰1 天前
Java 设计模式-行为型模式(更新中)
java·开发语言·设计模式
星心源七境1 天前
七境体系全解析:从六韬兵法到AI锁颜,一套贯穿古典智慧与现代应用的成长操作系统
人工智能·设计模式·设计
qq_297574671 天前
设计模式系列文章(基础篇第21篇):迭代器模式——遍历聚合解耦,实现统一迭代访问
设计模式·迭代器模式
禅思院2 天前
前端请求取消与调度完全指南:从 AbortController 到企业级优先级架构
前端·设计模式·前端框架