【Java】Java单例模式

单例模式是什么鬼?

顾名思义,只有一个实例。

首先写一个类,将类的构造函数写为私有的,并写一个静态的变量(最好是私有的)并指向null

private static SingleDemo me = null;

写一个公开的静态方法(能直接在外部类被Self所调用),用于创建实例

public static SingleDemo creatDemo()
public static SingleDemo creatDemo(){
   if(me == null) me = new SingleDemo();
   return me;
}

大体代码


public class SingleDemo {
	private static SingleDemo me = null;
	public int count=0;
	private SingleDemo() {
		count++;
	}
	//思考:单例模式为何需要返回
	public static SingleDemo creatDemo() {
		if(me == null) me=new SingleDemo();//单例模式重点,保证所有对象创建的是同一个实例
		return me;
	}

}

public class SingleTest {
	public static void main(String[] args) {
//		SingleDemo s1 = new SingleDemo();
		SingleDemo s1 = SingleDemo.creatDemo();

		SingleDemo s2 = SingleDemo.creatDemo();
		System.out.println(s1.count);
		s1.count++;
		System.out.println(s2.count);
		System.out.println(s1==s2);//true
	}
}

思考:

  1. 单例模式创建多个对象时指向几个实例? 一个
  2. 如果是单列模式,两个对象使用==判断是否为真?是
  3. 单列模式如何实现?在上述例子中以静态变量me作为flag,如果me为null,则new一个对象,然后返回,否则直接返回,即返回首次new的“地址”(哈希码)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇