1. 程式人生 > >單例模式、抽象類

單例模式、抽象類

單例模式
需求:在程式中的任何地方,我們想要獲取某一個類的唯一物件。
我們稱之為類的單例
Singleton
(1)提供一個私有的靜態的本型別的成員變數
(2)構造器私有化
(3)提供公有的靜態的方法獲取本類中建立的例項。

 餓漢寫法:  載入期間就例項化物件
 public class Singleton{
    private static Singleton instance = new Singleton();
    private Singleton(){}
    public static Singlet on getInstance(){
        return instance;
    }
 }
 懶漢寫法:  呼叫方法時才建立物件
 public class Singleton{
    private static Singleton instance ;
    private Singleton(){}
    public static Singleton getInstance(){
        if(instance ==null){
            instance = new Singleton();
        }
        return instance;
    }
 }                           

抽象類:
因為繼承的關係,子類的功能可以越來越具體,相對來說,父類
更加一般化,通用化。因為父類封裝了子類的共同行為,所以,
在定義時,我們可以定義方法的邏輯。有的時候,在父類中無法完成
子類的功能需求,此時,不如不寫,即不寫方法體,程式碼簡單化。
但是此方法必須使用abstract修飾,那麼此型別也必須使用abstract
修飾,即抽象類

1、抽象方法與抽象類
1)用abstract修飾的方法,不需要寫方法體,但是得用分號來結尾
2)有抽象方法的類,必須使用abstract宣告(修飾)
2、抽象類不能例項化
1) 抽象類不能建立物件,沒有意義
2) 抽象類可以提供構造器
3) 抽象類中可以沒有抽象方法
4) abstract和final不能同時修飾一個型別
3、繼承抽象類
1)若一個類繼承了抽象類,那麼這個類必須重寫(實現)抽象類的所有抽象方法
2)若一個類沒有實現抽象類的所有抽象方法, 那麼這個類必須使用abstract修飾
4、抽象類的意義:
1)給不同的子類定義一個父類
2)抽象類可以封裝子類的共同特徵與共同行為
3)雖然子類方法可能有不能的實現邏輯,但是
方法的定義一致。