单例设计模式与final关键字
目录
final关键字
什么是设计模式:
1、静态方法和属性的经典使用
2、设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
什么是单例模式:
a:所谓单例设计模式,就是采取一定的方法保证这整个的软件系统中,对某个类只存在一个的对象实例,并且该类只提供一个取得其对象实例的方法
b:单例模式有两种方法:A:饿汉式B:懒汉式
单例设计模式应用实例:
步骤如下:
1)构造器私有化--》防止直接new一个对象
2)类的内部创建对象
3)向外暴露一个静态的公共方法。getInstance
4)代码实现
饿汉式:
class Girlfriend{//如何保证只能创建一个Girlfriend//步骤[饿汉式]//1)构造器私有化//2)在类的内部直接创建私有静态对象//3)提供一个公共的static方法,返回gf对象private String name;public static Girlfriend getInstance(){return gf;}private static Girlfriend gf = new Girlfriend("小花");//为了能够在静态方法中返回gf对象,需将其修饰为staticprivate Girlfriend(String name) {super();this.name = name;}
}
懒汉式:
class cat{String name;private static cat cat;
// 步骤[懒汉式]
//1、仍然将构造器私有化
//2、定义一个static属性对象
//3、提供一个public的static方法,可以返回一个cat对象
//4、懒汉式,只有当用户使用getInstance时,才返回cat对象,后面再次调用时,
//会返回上次创建的cat对象private cat(String name) {super();this.name = name;}public static cat GetInstance() {if(cat == null) {
// 如果还没有创建cat对象cat = new cat("小花");}return cat;}
}
饿汉式与懒汉式区别:
1、二者最主要的区别在于创建对象的时机不同:饿汉式是在类的加载时就创建对象实例,而懒汉式是在使用时才创建
2、饿汉式不存在线程安全问题,懒汉式存在线程安全问题
3、饿汉式存在浪费资源的可能。因为如果程序员一个对象实例都没有使用,那么饿汉式创建的对象就浪费了,懒汉式是使用时才创建,就不存在这个问题
4、在javaSE标准类中,java.lang.Runtime就是经典的单例模式
final关键字:
final可用于修饰类,属性,方法和局部变量,
final使用情景:
1)当不希望类被继承时,可用final进行修饰
2)不希望父类的某个方法被子类覆盖/重写时,可以用final关键字修饰
3)当不希望类的某个属性的值被修改,可以使用final修饰
4)当不希望某个局部变量被修改,可以用final修饰
final的注意事项以及细节:
A:final修饰的属性又叫常量,一般用xx_xx_xx来命名
B:final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一:
a:定义时:如public final double TAX_RATE = 0.08;
b:在构造器中
c:在代码块中
C:如果final修饰的属性是静态的,则初始化的位置只能是1)定义时2)在静态代码块,不能在构造器中赋值
D:final类不能继承,但可以实例化对象
E:如果类不是final类,但含有final方法,则该方法虽然不能重写,但是可以被继承
F:一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法
G:final不能修饰构造方法(即构造器)
H:final与static往往搭配使用,效率更高,不会导致类的加载,底层编译器做了优化处理
I:包装类(Integer,Double,Float,Boolean等都是final类),String也是final类
单例设计模式与final关键字相关推荐
- Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字
目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...
- 类变量类方法,main方法,代码块,单例设计模式,final,抽象类
一.类变量和类方法 1.类变量 也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. 1).定 ...
- java 单例内部类_9 java的关键字static、单例设计模式、初始化块、关键字final、抽象类、接口、内部类...
static关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有时 ...
- Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类
Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...
- JavaSE面向对象:继承、多态、Super、Object类、重写、static、final、静态成员、懒汉式、饿汉式、单例设计模式、初始化块、抽象类、抽象方法、接口
感谢尚硅谷免费提供的视频 继承 ** 理解 ** 生活中的继承:子女继承了父母的财产或相貌或才华 java中的继承:一个类不用自己定义属性或方法,就已经具备了另一个类的属性和方法 把这种现象称为jav ...
- java static是单例_JAVA基础-static关键字及单例设计模式
static关键字 基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创 ...
- java 单例设计_Java 之单例设计模式
设计模式: 对问题行之有效的解决方式, 其实它是一种思想. 单例设计模式 解决的问题:就是可以保证一个类在内存中的对象唯一性. 即单个实例. 比如对于A 和 B 两个程序使用同一个配置信息对象时, A ...
- GOF设计模式之1:单例设计模式
1.单例设计模式核心作用: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点 2.常见应用场景: window的任务管理器 项目中读取配置文件一般也是一个单例模式 数据库连接池的设计也是采用单 ...
- 多个if用什么设计模式_抽丝剥茧——单例设计模式
单例设计模式 兄弟们好,今天是最后一个设计模式了,也是我们最熟悉的单例设计模式,可以说这个设计模式是我们最先接触到的设计模式了.想当年学习JavaSE的时候,老师聊到一个「饿汉式和懒汉式」,我还纠结了 ...
最新文章
- 虽然这些代码很少,就几行,但却很牛逼!
- LIVE预告 | 哈佛大学CS博士徐莉莉:用博弈论保护野生动物
- 搭建mongodb集群(副本集+分片)
- git安装【Windows】
- java 扑克牌排序_java 怎么写compareto方法实现扑克牌排序
- Java数据库篇4——表的约束
- 网管员、工程师 、专家 的岗位描述
- Excel关于宏的运用
- html5中checkbox的选中状态的设置与获取
- 清华2018顶级数据团队建设全景报告发布:Python最受欢迎,C语言含金量最高
- c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统
- NodeJS基础2---1 Promise小球运动
- 机械臂——六轴机械臂构型分析与MATLAB建模
- Python自然语言处理——nltk库入门之文本分词(英文)
- canvas合并图片简单用法
- 李宏毅2023春季机器学习笔记 - 01生成AI(ChatGPT)
- [转]中国佛学66句震撼世界的禅语
- Nginx性能优化(十八)
- 《C#语言和数据库技术基础》单词必备
- QT css样式 详解
热门文章
- IOS开发教程第一季之01UI基础day7合并IOS学习007----控件(UITableView03微博)
- 验证括号的匹配(艾伦图灵的栈操作)
- 单点登录服务Authelia(下篇)
- 冬季赚钱项目有哪些?怎么快速赚钱?
- 服装PDA软件|服装销售开单PDA管理软件|服装PDA管理系统|服装PDA点货系统|服装移动POS系统...
- 按键功能拓展--单击、双击、长按、组合按等
- 优思学院|什么是精益生产?企业如何实现精益生产?
- 边看边互动!优酷酷看模式技术揭秘
- win7 flash无法全屏,win7全屏问题
- 微信小程序小程序模板小程序开发小程序商城小程序流量变现社区小程序开发小程序