1. 程式人生 > 其它 >git rebase簡單使用

git rebase簡單使用

package com.study;

public class Study {
    public static void main(String[] args) {
        GirFriend girFriend01 = GirFriend.getInstance();
        GirFriend girFriend02 = GirFriend.getInstance();
        //注意此處不是new物件,是直接呼叫靜態方法,把結果賦給物件
        System.out.println(girFriend01);
        System.out.println(girFriend02);
        System.out.println(girFriend01 == girFriend02);//是同一個物件(靜態)

        System.out.println(Cat.len);//9
        Cat instance01 = Cat.getInstance();
        System.out.println(instance01);
        //再次呼叫
        Cat instance02 = Cat.getInstance();
        System.out.println(instance02);
        System.out.println(instance01 == instance02);


    }
}

/*
    單例模式:餓漢式(只要類載入物件就建立了)
    1.私有化構造器(新增private不讓外部new)
    2.在內部建立物件(新增static)
    3.提供一個公共的static方法,返回friend物件
    4.浪費資源
 */
class GirFriend{
    private String name;

    //GirFriend friend = new GirFriend("xh");
    private static GirFriend friend = new GirFriend("xh");
    //這裡直接建立好了靜態物件,會隨著類載入而載入
    //此處好像可以不加private

    //新增static是因為需要被靜態方法呼叫(靜態只能調靜態)

    private GirFriend(String name){//私有化構造器,加private是不讓外面new
        System.out.println("構造器GirFriend被呼叫...");
        this.name = name;
    }

    //建立這個方法的目的是為了不用建立物件也可以呼叫此方法
    public static GirFriend getInstance(){//getInstance獲取例項
        return friend;
    }

    @Override
    public String toString() {
        return "GirFriend{" +
                "name='" + name + '\'' +
                '}';
    }
}

/*
    單例模式:懶漢式(物件在使用時建立)
    1.私有化構造器(新增private不讓外部new)
    2.定義一個靜態屬性物件
    3.提供一個public static方法,可以返回一個Cat物件
    4.只有當用戶呼叫getInstance(),才返回cat物件,後面再次呼叫時會返回上次建立的物件,從而保證了單例
    5.存線上程安全問題

    希望在程式建立中只建立一個Cat物件,使用單例模式
 */
class Cat{
    private String name;
    public static int len = 9;//這裡建立靜態屬性len,測試類載入發現cat物件並沒有建立
    private static Cat cat;//cat物件沒有賦值預設為null

    private Cat(String name) {
        System.out.println("構造器Cat被呼叫...");
        this.name = name;
    }

    public static Cat getInstance(){//此處存線上程安全問題,需要加鎖
        if (cat == null){//如果沒用建立cat物件則直接建立
            cat = new Cat("wy");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}