Java day14【第二十五章】单例设计模式
【第二十五章】单例设计模式
一.单例设计模式
在一个类中提供一个方法,由于某种需求,只允许提供一个实例化对象
class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return INSTANCE; } public void print(){ System.out.println("www.mldn.com"); } } public class Message{ public static void main(String args[]){ Singleton instance = null ; instance = Singleton.getInstance(); instance.print(); } }
为什么要强调单例呢,在很多情况下,有些类是不需要重复产生对象的,例如:如果一个程序启动,那么现在肯定需要有一个类负责保存有一些程序加载的数据信息。
例如在Windows中只有一个单例设计模式。
对于单例设计模式分为俩种模式:懒汉式、饿汉式。在之前定义的都是饿汉式。
饿汉式:在系统加载类的时候就会自动提供有Singleton类的实例化对象。
懒汉式:在第一次使用的使用进行实例化处理。
范例:将单例修改为懒汉式
class Singleton { private static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if (instance == null) return new Singleton(); return instance; } public void print(){ System.out.println("www.mldn.com"); } } public class Message{ public static void main(String args[]){ Singleton instance = null ; instance = Singleton.getInstance(); instance.print(); } }
二.多例设计模式
多例设计指可以保留多个实例化对象。例如:描述性别:男女
范例:描述颜色三基色:
class Color { private static final Color RED = new Color("红色"); private static final Color BLUE = new Color("蓝色"); private static final Color GREEN = new Color("绿色"); private String color; private Color(String color){ this.color = color; } public static Color getInstance(String color){ switch(color){ case"RED":return RED; case"BLUE":return BLUE; case"GREEN":return GREEN; default:return null; } } public String toString(){ return this.color; } } public class Message{ public static void main(String args[]){ Color c = Color.getInstance("RED"); System.out.println(c.toString()); } }
多例设计与单例设计的本质是相同的,一定都会在内部提供static方法以返回实例化对象。