java设计模式中单例模式讲解
学习到java一共有23种设计模式,设计模式是被大多数人知晓,反复使用,约定俗成的代码经验总结。每种设计模式都代表了在项目中会重复发生的问题,所以合理的运用设计模式可以完美的解决很多问题。
学习java的设计模式是很有必要的。虽然在面向对象还没学习到继承和接口,但是23中设计模式中的单例模式已经可以了解了。
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。具体有两种表现形式:
package 面向对象;//单例设计模式第一种public class Singleton {public static void main(String[] args) { SingletonDemo a=SingletonDemo.getInstance(); } }class SingletonDemo {private static SingletonDemo a =null;private SingletonDemo(){}public static SingletonDemo getInstance() {if(a==null) { SingletonDemo a=new SingletonDemo(); }return a; } }
这种方式可以看出在调用方法时才创建新的对象,但是在多线程时容易产生问题,所以一般开发用的是下面的一种方式。
1 package 面向对象; 2 3 public class Singleton_2 4 { 5 public static void main(String[] args) 6 { 7 Singleton_2Demo a=Singleton_2Demo.getInstance(); 8 } 9 }10 11 class Singleton_2Demo12 {13 private Singleton_2Demo(){}14 private static Singleton_2Demo a=new Singleton_2Demo();15 public static Singleton_2Demo getInstance()16 {17 return a;18 }19 }
这种方式简单,不用考虑多线程的问题
通过这个设计模式对之前学习时写的面向对象的练习调整了一下,实现了单例的模式。
原代码:
package 面向对象; class Student { private String name;private int number;private String sex;private boolean learn;private String a; Student() { name="未知"; number=000; sex="未知"; learn=false; a="未知"; } public void setName(String name) { this.name=name; } public void setNumber(int number) { this.number=number; } public void setSex(String sex) { this.sex=sex; } public void setLearn(boolean learn) { this.learn=learn; } void scan() {if(this.learn==true) { a="在学习"; }else{ a="不在学习"; } System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a); } } class Data { public static void main(String[] arg) { Student XiaoMin=new Student(); XiaoMin.setName("小明"); XiaoMin.setNumber(13023); XiaoMin.setSex("男"); XiaoMin.setLearn(true); XiaoMin.scan(); } }
单例模式:
package 面向对象;//实现单例设计模式 class Student_1 { private String name;private int number;private String sex;private boolean learn;private String a; private Student_1() { name="未知"; number=000; sex="未知"; learn=false; a="未知"; } private static Student_1 b=new Student_1(); public static Student_1 getInstance() { return b; } public void setName(String name) { this.name=name; } public void setNumber(int number) { this.number=number; } public void setSex(String sex) { this.sex=sex; } public void setLearn(boolean learn) { this.learn=learn; } void scan() {if(this.learn==true) { a="在学习"; }else{ a="不在学习"; } System.out.print("姓名:"+this.name+" 学号:"+this.number+" 性别;"+this.sex+" 是否在学习:"+a); } } class Data_2 { public static void main(String[] arg) { Student_1 XiaoMin=Student_1.getInstance(); XiaoMin.setName("小王"); XiaoMin.setNumber(13023); XiaoMin.setSex("男"); XiaoMin.setLearn(true); XiaoMin.scan(); } }
以上是java设计模式中单例模式讲解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4
