vObjectives of Singleton Pattern
•Create a class and let it manageone and only one instance of itself
•Prevent other classes from creating a new instance
•Provide a global access pointto the instance
vStep 1:
•Provide a private constructorso that no one can directly create an object of the class
vStep 2:
•Provide a public static getterinside the same class, that returns a unique instanceof the class
vStep 1:

public class RegHandler{

private static RegHandler regHandler;//only one instance

private RegHandler(){} /* prevents other classes from

} instantiating the class */

vStep 2:

public class RegHandler{

private static RegHandler regHandler;

private RegHandler(){}

public static RegHandler getInstance(){//getter method

if (regHandler==null){ //if object doesn’t exist

regHandler=new RegHandler();//creates only one instance

}

return regHandler;//returns existing object’s reference

}}

example:recode the oob-case1 student register

class Student
{
String missionId;
String name;
int age;
public Student()
{
name = null;
age = 0;
System.out.println("Student begin to regist");
}
public Student(String s, int i)
{
name = s;
age = i;
}
public void getMissionId()
{
//Registrar r = new Registrar();
Registrar r = Registrar.getRegistrar();
missionId = r.getMissionId(this);
}
}

class Registrar
{
private static int id = 0;
private static Registrar r;
private Registrar()
{
System.out.println("Registrar is begin now");
}
public static Registrar getRegistrar()
{
if(r == null )
r = new Registrar();
return r;
}
public String getMissionId(Student s)
{
Validator v = Validator.getValidator();
if(v.missionId(s))
{
id++;
}
String missionId = "S000"+id;
return missionId;
}
}

class Validator
{
private static Validator v;
private Validator()
{
System.out.println("Validator is begin now");
}
public static Validator getValidator()
{
if(v == null)
v = new Validator();
return v;
}
public boolean missionId(Student s)
{
if (s.age<18)
return false;
return true;
}
}
public class UniversityRegistation {

/** Creates a new instance of UniversityRegistation */
public UniversityRegistation() {
System.out.println("The system is working now");
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Student s = new Student("bobo",26);
s.getMissionId();
System.out.println(s.name+" "+s.age+" "+s.missionId);
Student ss = new Student("shirley",22);
ss.getMissionId();
System.out.println(ss.name+" "+ss.age+" "+ss.missionId);

}

}

Singleton Patten相关推荐

  1. Service Locator Patten 总结

    原网址将会不断更新 :   作程的技术博客  <Service Locator Patten 总结>  it.zuocheng.net  http://www.zuocheng.net/i ...

  2. 设计模式 -- 单例模式

    Singleton Patten 是Java中最简单的设计模式之一. 它提供了一种创建对象的最佳方式.该模式涉及的是单一类.该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯 ...

  3. 【Spring】bean的作用域(@Scope) - singleton、prototype

    已知spring 3+已拥有多种不同的作用域: singleton(默认).prototype.request.session.global session.(参考: spring中scope作用域( ...

  4. 使用Singleton需要考虑内存释放

    GoF[p84]所说的Singleton没有考虑到内存的释放 解决方法: 1.加入一个成员函数DestroyInstance()来释放内存,在整个工程中需且仅需调用DestroyInstance()一 ...

  5. 用java代码实现Singleton,为什么在Java代码中实现Singleton模式(有时被认为是Java世界中的反模式)?...

    I have seen some people in SO commenting that Singleton Pattern is an anti-pattern. I want to know w ...

  6. Singleton 单例模板

    1 // singleton.h 2 3 #ifndef SINGLETON_H 4 #define SINGLETON_H 5 6 // 单例基类模板 7 template <class T& ...

  7. php singleton()

    common.php <?php class CC { private static $ins; public static function singleton() { if (!isset( ...

  8. 设计模式之单例模式(Singleton)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  9. Ruby的Singleton method

    Ruby中,特定于某一对象的方法被称为Singleton method. 例如: a = "string"def a.runputs "#{self} run" ...

最新文章

  1. 用质因子去分解质因数
  2. vue将文本渲染html,vue2.0 之文本渲染-v-html、v-text
  3. ES6新特性_ES6扩展运算符的介绍---JavaScript_ECMAScript_ES6-ES11新特性工作笔记013
  4. python编程英语单词下载2019_图形化编程软件-mPython下载2019正式版 下载_久友软件下载...
  5. [2018.10.23 T1] 战争
  6. 使用Battery Historian采集android耗电数据
  7. Excel表格中将两个或多个单元格内容合并为一个单元格的内容
  8. 四、PHP进阶学习之MySQL②
  9. excel公式编辑器_V14.0发布:组件化编辑器+数据透视表
  10. linux安装系统如何查看硬盘,如何检查Linux系统服务器的硬盘是SSD还是HDD?
  11. 机器学习(一)机器学习概述
  12. 机器学习 python
  13. ABC166E This Message Will Self-Destruct in 5s 题解
  14. 【渝粤题库】陕西师范大学180204市场营销学 作业(高起本)
  15. 搭档之家:“假欧冠决赛”竟1万多人观看,刺不刺激,惊不惊喜,意不意外?
  16. PC客户端软件的安装和卸载测试知识点
  17. 数学建模入门 方法及代码
  18. 微信小程序实现附近医院、加油站、景点和地图路线导航功能(超详细)(附源码)
  19. 前端使用search搜索器、with(关联)和 field
  20. SVN 在idea 中无法查看历史记录

热门文章

  1. 视频信号传输标准 BT656
  2. notes 链接问题
  3. 追求成功还是避免失败 (zz)
  4. 统计子串在母串出现的次数
  5. 解决 QRibbon 在VS+Qt 环境下的编码报错问题 “文本后缀无效; 未找到文文本运算符或文本运算符模板“
  6. Centos7 ping不通百度
  7. Altium19在原理图中选中器件,PCB中对应器件飞到鼠标下,跟随鼠标,怎么解决?
  8. PHY与网络变压器的连接方式
  9. 问题解答1:ERROR 1682 (HY000): Native table 'performance_schema'.'session_variables' has the wrong struct
  10. K-Means的三种迭代算法