1. 程式人生 > 其它 >面試官:Zookeeper叢集怎麼搭建?

面試官:Zookeeper叢集怎麼搭建?

1.瞭解並上手

  • 核心思想:保證一個類只有一個例項物件,並且提供了一個全域性的訪問點,(外部通過這個訪問點來訪問該類的唯一例項)

  • 全域性訪問點:全域性靜態欄位,就是宣告一個私有的靜態的屬性,型別是該類;因為靜態欄位是屬於類的,就可以保證只有一個例項;

  • 私有建構函式:保證外部無法例項化該類;

 1 //常規中,先判斷這個例項是否已經被new 過了,如果沒有,讓這個這個靜態屬性Goods._instance等於這個例項;函式返回的是這個例項
 2 
 3 export  default  class Goods{
 4     private  static  _instance:Goods;
5 private num:number=3; 6 private constructor(){ //私有建構函式 7 8 } 9 //常規寫法 10 public static getInstance():Goods{ 11 if(!Goods._instance) Goods._instance=new Goods(); 12 return Goods._instance; 13 } 14 //返回這個例項, 15 //使用執行器函式get寫 16 //當獲取這個值的時候會呼叫這個函式 17 public static get _instance():Goods{
18 return Goods._instance || (Goods._instance=new Goods()) 19 } 20 21 public run():void{ //例項方法 22 console.log("aa") 23 } 24 25 } 26 27 //外部執行方式 28 1.Goods.getInstance().run() //這樣會執行這個run方法,因為getInstance是個靜態方法,必須使用類呼叫,而這個靜態方法返回的是一個例項,就能呼叫例項方法run(); 29 2.Goods.instance.run()//get執行方式
30 31 //每次呼叫都是同一個物件,所以Goods.instance=Goods.instance這兩個相等,都是一個例項;

2.使用場景

      一個作業系統中可以存在多個列印任務,但我們只有一個印表機,同一時間只能有一個正在工作的任務,這個時候記憶體中印表機的這個類就必須是單例的