在Java中创建静态Singleton模式
Creating Static Singleton Patterns in Java
我正在创建一个实用程序类,该类将用于创建绑定到当前线程的新org.mozilla.javascript.Context
对象。我有一个单独的全局JavaScript范围,可能有几个导入/初始化语句等。
我希望外部类能够通过简单地使用Utility.getContext()
和Utility.getScope()
来检索Context对象和Scope对象以供将来执行,而不必显式地使用getInstance()
函数。singleton模式是必要的,因为上下文和作用域都需要是单个实例。
下面的代码有意义吗?
public class Utility {
private static Utility instance;
private static ScriptableObject scope = null;
private Utility() {}
private static Utility getInstance() {
synchronized (Utility.class) {
if (instance == null)
instance = new Utility();
return instance;
}
}
private static Context getSingletonContext() {
Context context = Context.getCurrentContext();
if (context == null)
context = Context.enter();
if (scope == null) {
scope = new ImporterTopLevel(context);
Script script = context.compileString("Global JavaScript Here","Script Name",1,null);
script.exec(context,scope);
scope.sealObject();
}
return context;
}
public static Context getContext() {
return getInstance().getSingletonContext();
}
public static Scriptable getScope() {
Scriptable newScope = getContext().newObject(scope);
newScope.setPrototype(scope);
newScope.setParentScope(null);
return newScope;
}
}
1.将此公开
public static Utility getInstance()
2.不需要使类中的所有方法都是静态的,除了这个getInstance()
方法。
3.当您试图访问其他类中该类的singleton对象时,请按此方式执行。
Utility ut = Utility.getInstance();
这就是为什么您不需要将Utility类中的方法设置为静态的,除了getInstance()
4.有三种方法可以获得Singleton,
i同步方法
ii带有双重检查锁定的同步语句。
iii在定义时初始化静态对象引用变量。。
例如:
在定义时初始化静态对象引用变量
private static Utility instance = new Utility();
private Utility() {}
private static Utility getInstance() {
return instance; // WILL ALWAYS RETURN SINGLETON
// REFER HEAD FIRST DESIGN PATTERN BOOK FOR DETAILS
}
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- D3.js模式不适用于弧形或圆环图
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 模块模式和这个
- 带有let的JS/EECMAScript6私有字段的模式
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 执行动态模式弹出
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- AngularJS ui路由器html5模式中断路由
- 包含圆括号的JavaScript Regex模式
- 显示模块模式在Knockout中设置模型的新实例
- ES6/具有继承性的Meteor-Singleton模式
- 在Java中创建静态Singleton模式
- Javascript Singleton设计模式和闭包
- JavaScript中的Singleton模式