單例、多例設計模式、列舉
阿新 • • 發佈:2019-02-10
單例設計模式:
特徵是構造方法私有化,而後在類的內部提供有一個static本類物件,並且利用static方法取得此物件。
程式碼如下:
class Singleton{
private static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("hello world");
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
Singleton s = Singleton.getInstance();
s.print();
}
}
一定要記住封裝不只是private一種方式,還包含有protect許可權,往往出現在一些跨包的操作上。
如果存在有多個物件,那麼就是多例設計模式(在類的內部存在有多個物件的資訊)。
程式碼如下:
class Color{
private static final Color RED = new Color("紅色");
private static final Color GREEN = new Color("綠色");
private static final Color BLUE = new Color("藍色");
private String title;
private Color(String title){
this.title=title;
}
public static Color getInstance(int ch){
switch(ch){
case 0:
return RED;
case 1:
return GREEN;
case 2:
return BLUE;
default:
return null;
}
}
public String toString(){
return this.title;
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
System.out.println(Color.getInstance(0));
System.out.println(Color.getInstance(1));
System.out.println(Color.getInstance(2));
System.out.println(Color.getInstance(3));
}
}
在單例設計模式裡面只有一個物件,所以當呼叫了getInstance 方法的時候可以很方便的找到制定的物件,但是如果是多例設計模式需要記住編號,太麻煩了,為此才會在jdk1.5後提供了列舉型別。
列舉程式碼如下:
enum Color{
RED("紅色"),GREEN("綠色"),BLUE("藍色");
private String title;
private Color(String title){
this.title= title;
}
public String toString(){
return this.title;
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
System.out.println(Color.RED);
System.out.println(Color.GREEN);
System.out.println(Color.BLUE);
}
}
面試題:enum和Enum有什麼的區別?哪個類使用了單例設計模式?
-enum是一個關鍵字而Enum是一個類;
-使用enum定義的列舉相當於一個類繼承了Enum類;
-Runtime類使用了單例設計模式;
特徵是構造方法私有化,而後在類的內部提供有一個static本類物件,並且利用static方法取得此物件。
程式碼如下:
class Singleton{
private static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return INSTANCE;
}
public void print(){
System.out.println("hello world");
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
Singleton s = Singleton.getInstance();
s.print();
}
}
一定要記住封裝不只是private一種方式,還包含有protect許可權,往往出現在一些跨包的操作上。
如果存在有多個物件,那麼就是多例設計模式(在類的內部存在有多個物件的資訊)。
程式碼如下:
class Color{
private static final Color RED = new Color("紅色");
private static final Color GREEN = new Color("綠色");
private static final Color BLUE = new Color("藍色");
private String title;
private Color(String title){
this.title=title;
}
public static Color getInstance(int ch){
switch(ch){
case 0:
return RED;
case 1:
return GREEN;
case 2:
return BLUE;
default:
return null;
}
}
public String toString(){
return this.title;
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
System.out.println(Color.getInstance(0));
System.out.println(Color.getInstance(1));
System.out.println(Color.getInstance(2));
System.out.println(Color.getInstance(3));
}
}
在單例設計模式裡面只有一個物件,所以當呼叫了getInstance 方法的時候可以很方便的找到制定的物件,但是如果是多例設計模式需要記住編號,太麻煩了,為此才會在jdk1.5後提供了列舉型別。
列舉程式碼如下:
enum Color{
RED("紅色"),GREEN("綠色"),BLUE("藍色");
private String title;
private Color(String title){
this.title= title;
}
public String toString(){
return this.title;
}
}
public class TestDemo{
public static void main(String[] args)throws Exception {
System.out.println(Color.RED);
System.out.println(Color.GREEN);
System.out.println(Color.BLUE);
}
}
面試題:enum和Enum有什麼的區別?哪個類使用了單例設計模式?
-enum是一個關鍵字而Enum是一個類;
-使用enum定義的列舉相當於一個類繼承了Enum類;
-Runtime類使用了單例設計模式;