首页 > 编程语言 >〖JAVA养成计划〗设计模式-单例设计模式以及衍生的多例设计模式

〖JAVA养成计划〗设计模式-单例设计模式以及衍生的多例设计模式

时间:2022-11-07 15:36:54浏览次数:36  
标签:JAVA private Sex static 单例 设计模式 public


 单例设计模式

package com.tongbu;
/**
* 单例设计模式分为两类:
* ①是俄汉式
* ②是懒汉式
* 以下程序是俄汉式:不管程序中有没有使用,都实例化对象。
* @author Administrator
*
*/
public class DemoSingleton {
public static void main(String[] args) {
Singleton in = null;
in = Singleton.getInstance();
in.print();
}
}
class Singleton {
private static final Singleton INSTANCE = new Singleton();//就是这里
public static Singleton getInstance() {
return INSTANCE;
}
private Singleton() {// 构造方法私有花了
}
public void print() {
System.out.println("单例设计模式!");
}
}

 

package com.tongbu;
/**
* 单例设计模式分为两类: ①是俄汉式 ②是懒汉式 以下程序是懒汉式:在程序第一次使用是才实例化对象。
*
* @author Administrator
*
*/
public class DemoSingleton2 {
public static void main(String[] args) {
Singleton2 in = null;
in = Singleton2.getInstance();
in.print();
}
}
class Singleton2 {
private static Singleton2 instance;
public static Singleton2 getInstance() {
if (instance == null) {//就是这里,第一次使用时初始化
instance = new Singleton2();
}
return instance;
}
private Singleton2() {// 构造方法私有化了
}
public void print() {
System.out.println("单例设计模式!懒汉式");
}
}

多例设计模式:

package com.tongbu;
/**
* 多例设计模式只是单例设计模式的一个衍生品,本质上还是:
* 构造方法私有化,内部产生实例化对象,之不过单例设计模式只有一个,多例设计模式产生多个;
* 一定要理解他们的共同出发点:限制对象的使用。
* @author zhang
*/
public class DemoDuoLI {
public static void main(String[] args) {
Sex sex = Sex.getInstance(Sex.MALE_CH);
System.out.println(sex);
}
}
class Sex {
public static final int MALE_CH = 1;
public static final int FEMALE_CH = 2;
private String sex;
private Sex(String sex) {
super();
this.sex = sex;
}
private static final Sex MALE = new Sex("男");
private static final Sex FEMALE = new Sex("女");
public static Sex getInstance(int ch) {
switch (ch) {
case MALE_CH:
return MALE;
case FEMALE_CH:
return FEMALE;
default:
return null;
}
}
@Override
public String toString() {
return sex;
}
}

标签:JAVA,private,Sex,static,单例,设计模式,public
From: https://blog.51cto.com/u_15866474/5829907

相关文章

  • JAVA文件创建与查询
    java常用的文件操作1~文件的创建(三种不同方法):(1)根据路径构建一个File对象:newFile(Stringpathname)(2)根据父目录文件+子路径构建:newFile(Fileparent,Stringchild)(3)......
  • java 复制文件和图片
    一复制文件采用BufferedReader和BufferedWriter作为缓存publicstaticvoidmain(String[]args)throwsIOException{//TODOAuto-generatedmethodstubBuffer......
  • Java
    Java注释注释不会被执行单行注释//注释多行注释/*注释/文档注释/**注释/标识符Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符......
  • Java学习——11.07
    今天晚上打算补一下英语和数学,于是早上就把Java学了。也不多,稀疏数组的创建,还原。同时也熟悉了数组的创建,打印。就很棒!!!!!!!!!直接上图吧,敲了一上午代码了。   下......
  • Rust 编程中使用 leveldb 的简单例子
    前言最近准备用Rust写一个完善的blockchain的教学demo,在持久化时考虑到使用leveldb。通过查阅文档,发现Rust中已经提供了使用leveldb的接口。将官方的例子修改了下,能够运行通......
  • java 常用的文件操作
    三种文件创建方操作:importorg.testng.annotations.Test;importjava.io.File;importjava.io.IOException;publicclassFileTest{publicstaticvoidmain......
  • java问题处理---若依框架下对某个url权限放开,登陆后访问403 Forbidden
    问题情景:  在若依框架下搭建了一套前后端代码,对某个url放开权限,后端SecurityConfig进行如下配置但当登陆系统后,请求放开权限的url,403报错。解决方案:参考:https://gi......
  • 死磕Java面试系列:深拷贝与浅拷贝的实现原理
    深拷贝与浅拷贝的问题,也是面试中的常客。虽然大家都知道两者表现形式不同点在哪里,但是很少去深究其底层原理,也不知道怎么才能优雅的实现一个深拷贝。其实工作中也常常需要......
  • 23种设计模式之自定义Spring框架(五)
    7,自定义Spring框架7.1spring使用回顾自定义spring框架前,先回顾一下spring框架的使用,从而分析spring的核心,并对核心功能进行模拟。数据访问层。定义UserDao接口及其子......
  • 使用VSCode,学习JAVA Hello World
    使用VSCode,学习JAVA安装插件:ExtensionPackforJava安装好后ctrl+shift+p,输入Java,选择“创建java项目”,选择项目类型:Nobuildtools,创建一个HelloWorld项目 ......