java – 在需要初始化对象时使用的设计模式?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在需要初始化对象时使用的设计模式?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1269字,纯文字阅读大概需要2分钟。
内容图文
我有一个类,它有一个Initialize方法,它在数据库中创建了一堆表.这个类看起来像这样:
public class MyClass
{
private bool initialized = false;
public void Initialize()
{
if(!initialized)
{
//Install Database tables
initialized = true;
}
}
public void DoSomething()
{
//Some code which depends on the database tables being created
}
public void DoSomethingElse()
{
//Some other code which depends on the database tables being created
}
}
DoSomething和DoSomethingElse这两个方法需要确保在继续之前调用了Initialize方法,因为它们依赖于数据库中的表.我有两个选择:
>在类的构造函数中调用Initialize方法 – 这似乎不是一个好主意,因为构造函数现在应该调用方法,这些方法非常重要并且可能导致异常.
>在两种方法中的每种方法中调用Initialize方法 – 这似乎不是一个很好的解决方案,尤其是如果有多个方法.
是否有一种设计模式可以更优雅地解决这个问题?
解决方法:
我将使用调用Initialize的static factory method,并使构造函数为private,以强制使用静态工厂方法:
public class MyClass
{
private MyClass() { ... }
public static MyClass createInstance() {
MyClass instance = new MyClass();
instance.Initialize();
return instance;
}
}
另外,我会删除初始化变量 – 部分是因为你不再需要它 – 但也因为它需要一些保证可见性的方法(例如同步,volatile或AtomicBoolean)来保证线程安全.
我认为关于(不)在构造函数中工作的Mi?ko Hevery’s博客文章是一个有趣的读物.
内容总结
以上是互联网集市为您收集整理的java – 在需要初始化对象时使用的设计模式?全部内容,希望文章能够帮你解决java – 在需要初始化对象时使用的设计模式?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。