下面代码中的理解:
Singleton类之所以是private型构造方法,就是为了防止其它类通过new来创建实例,即如此,那我们就必须用一个static的方法来创建一个实例(为什么要用static的方法?因为既然其它类不能通过new来创建实例,那么就无法获取其对象,那么只用有类的方法来获取了)
class Singleton {
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
public void say(){
System.out.println("单例模式");
}
}
public class SingletonDemo{
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
//再次getInstance()的时候,instance已经被实例化了
//所以不会再new,即s2指向刚初始化的实例
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
s1.say();
s2.say();
}
}
另一种写法:
注意下面注释掉的部分没有final,在测试中发现一个问题就是有final与没有final最后的测试输出都为ture,不解,后来问题的一个高人,经指点,得知单态的情况下.有final与没有final在于后面的修改,而不是new与不new的问题.final在这个例子中是表示那个instance在后面是不可以修改的
class Singleton {
//private static Singleton instance= new Singleton();
private static final Singleton instance= new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
public void say(){
System.out.println("单例模式");
}
}
public class SingletonDemo{
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
s1.say();
s2.say();
}
}
转载请注明出处,谢谢您对本人的劳动成果表示赞成.
分享到:
相关推荐
首先向关注过我这个系列...这立刻让我想到了最常用也是最简单最容易理解的一个设计模式 单例模式 何为 单例模式 ? 故名思议 即 让 类 永远都只能有一个实例。 由于 示例代码 比较简单 我也加了注释,这里就不在赘述
MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...
1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/46410055。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目...
使用枚举类型也可以实现单例模式,这是Java语言提供的原生态支持,不仅能自动支持序列化机制,而且绝对防止多次实例化。代码示例如下: ```java public enum Singleton { INSTANCE; public void someMethod()...
demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择
使用原生JavaScript写的单例小模式,适用于大多数的form表单中。
本篇博文主要内容参考 C++的单例模式一文,在此,为原作者耐心细致的分析讲解,表示感谢。本文将结合此篇文章,给出自己做实验后的理解以及代码,作为学习的小结。 单例模式,它的意图是保证一个类仅拥有一个实例...
在软件设计模式中,单例模式属于创建型模式的一种,它能够确保一个类只有一个实例,并提供一个全局访问点。JavaScript作为一种灵活的编程语言,虽然没有类和实例的概念,但借助函数和闭包,同样可以实现单例模式。 ...
在这个压缩包中,我们重点关注两种模式:单例模式和简单工厂模式。 单例模式是一种创建型设计模式,其核心特点是保证一个类只有一个实例,并提供一个全局访问点。在Java中实现单例,通常有懒汉式、饿汉式和双重检查...
单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器...
首先,单例模式是一种确保一个类只有一个实例并提供全局访问点的设计模式。在UML中,单例通常用一个带有静态工厂方法的类来表示。这个方法不返回新的对象,而是返回类的唯一实例。例如,我们可以创建一个名为`...
例如,单例模式确保一个类只有一个实例,并提供一个全局访问点;工厂模式定义了一个创建对象的接口,但让子类决定实例化哪个类;抽象工厂模式提供了一组接口,用于创建相关或依赖对象的家族,而无需指定具体类;建造...
在给定的压缩包文件中,我们可以看到涉及到九种基本的设计模式,它们分别是:组合模式(Composite)、策略模式(Strategy)、外观模式(Facade)、观察者模式(Observer)以及单例模式(Singleton)。接下来,我们将...
单例模式确保系统中任何时候只有一个实例存在,通常用于管理资源或者控制对共享资源的访问。 ### 9. 行为模式示例 行为模式关注的是对象之间的交互和职责分配。题目中提到的观察者模式(B) 是一个典型的例子。这种...
本资源包含了关于装饰模式、单例模式和工厂模式的学习视频,以下是这三个模式的详细介绍: 1. **装饰模式(Decorator Pattern)** 装饰模式是一种结构型设计模式,它允许我们向一个对象添加新的行为或责任,而无需...
创建模式是指在创建对象时使用的模式,包括 Factory(工厂模式)、Singleton(单例模式)、Builder(建造者模式)、Prototype(原型模式)等。这些模式都是为了解决对象创建的问题,使得对象的创建更加灵活和可扩展...
这里我们讨论四种常见的设计模式:单例模式、工厂模式、观察者模式和装饰器模式。 1. 单例模式: 单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于资源管理,例如数据库连接、线程池或配置...
1. 单例模式(Singleton):在PetShop中,数据库连接管理器通常采用单例模式,确保在整个应用程序运行期间只有一个实例存在,避免资源浪费,提高性能。通过静态方法或双重检查锁定实现单例,确保线程安全。 2. 工厂...
在JavaScript中,单例模式常用于确保一个类只有一个实例,而建造者模式则允许复杂对象的构建过程逐步进行,提高代码的可读性和可维护性。 2. 结构型模式:这类模式处理对象组合和结构,如适配器模式、装饰器模式、...