单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)

简介: 单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)

分为两个类,一个是学生类,另一个是main类


学生类


package cn.campsg.java.experiment;
public class Student {
  private String name;
  private int age;
  private static Student s = null;   //这里设置为静态变量,并且是私有类型的,设置初始为null,说明没有产生对象
  private Student(String name,int age){  //同时这里构造函数是私有的,只有在本类中才能进行调用
  this.name = name;
  this.age = age;
  }
  //静态方法调用的只能是静态的
  public static Student getInstence(String name,int age) //这里也定义是静态的,是公共的
  {
  //如果类内静态对象是null,说明并没有初始分配,所有要配置对象
  if(s == null){ 
    s = new Student(name,age);
    return s;
  }
  else
    return s;  //如果是原本类内存在,则就返回类内的,不能创建新的对象
  }
  //这个也是公共的,允许输出姓名及年龄
  public void getInfo(){
  System.out.println("姓名:"+this.name+" 年龄:"+this.age);
  }
}


main类:


package cn.campsg.java.experiment;
public class MainClass {
  //注意java中的main函数必须是静态的
  public static void main(String[] args){
  Student s = Student.getInstence("小王", 15);  //首先进行初始值
  s.getInfo();
  Student s1 = Student.getInstence("小li", 16); //此时再创建的时候,类内原本就有一个静态,所以无法重新创建一个新的对象
  s1.getInfo();
  }
}


运行结果:



这里我们看到最后都打印出了相同的姓名和年龄,

1.是因为在类内有一个静态的对象,并且在其中给构造函数进行私有属性。

2.使我们只能通过其中的公共函数接口来进行创建对象,此时会判断是否之前存在着类对象,存在即返回之前创建的,不存在的话进行初始化创建。


注意这里面先创建一个对象为null,这个对象为static是静态的,限制构造函数为私有的,使接口为static的用来判断是否创建新的对象,并且返回该对象


相关文章
|
1月前
|
设计模式 算法 C++
【C++ 泛型编程 进阶篇】C++元模板编程与设计模式的结合应用教程(二)
【C++ 泛型编程 进阶篇】C++元模板编程与设计模式的结合应用教程
27 0
|
1月前
|
设计模式 编解码 C++
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(一)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
50 0
|
3月前
|
设计模式 Rust JavaScript
【一起学Rust | 设计模式】习惯语法——使用借用类型作为参数、格式化拼接字符串、构造函数
【一起学Rust | 设计模式】习惯语法——使用借用类型作为参数、格式化拼接字符串、构造函数
38 0
|
1月前
|
设计模式 存储 缓存
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(二)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
27 0
|
3天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
3月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
31 1
|
3月前
|
设计模式 算法 Java
【设计模式】策略模式在数据接收和发送场景的应用
在数据接收和发送场景打算使用了if else进行判断。ASystem.sync("向A同步数据");BSystem.sync("向B同步数据");...非常麻烦,需求多了很臃肿!策略模式(Strategy Pattern)定义了一组同类型的算法,在不同的类中封装起来,每种算法可以根据当前场景相互替换,从而使算法的变化独立于使用它们的客户端(即算法的调用者)。// 创建两个策略对象// 创建上下文对象,并传入策略对象。
59 1
|
9天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
30天前
|
设计模式 算法 中间件
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
【C++ 可调用对象的应用】C++设计模式与现代编程技巧:深入可调用对象的世界
114 1
|
1月前
|
设计模式 编解码 算法
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(三)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
29 0