git rebase簡單使用
阿新 • • 發佈:2021-10-07
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 + '\'' + '}'; } }