1、單例模式分爲兩種:java
(1)餓漢式單例:在類加載階段就建立了一個對象。node
(2)懶漢式單例:用對對象的時候纔會建立對象。(連載53中例子就是懶漢式)git
餓漢式舉例:github
package com.bjpowernode.java_learning; public class D54_1_HungtySingtonMode { public static void main(String[] args) { Customer54 c1 = Customer54.getCustomer54(); Customer54 c2 = Customer54.getCustomer54(); System.out.println(c1==c2); } } //餓漢式單例模式 class Customer54{ private static Customer54 c = new Customer54(); private Customer54() {} public static Customer54 getCustomer54(){ return c; } }
2、接口也是一種引用類型,能夠等同看做類微信
1.如何定義接口,語法:學習
[修飾符] interface 接口名()
2.接口中只能出現:常量、抽象方法大數據
3.接口實際上是一個特殊的抽象類,特殊在接口是徹底抽象的ui
4.接口中沒有構造方法,沒法被實例化spa
5.接口和接口之間能夠多繼承.net
6.一個類能夠實現多個接口。(這裏的」實現「能夠等同看做」繼承「)
7.一個非抽象的類實現接口,須要將接口中全部的方法「實現/重寫/覆蓋」
package com.bjpowernode.java_learning; public interface D54_2_InterfaceExercise { public static final String SUCCESS = "sucess"; public static final double PI = 3.1415926; //public static final在接口中是能夠省略的,由於因爲語法規則知道,只能是常量 byte MAX_VALUE = 127; public abstract void m54();//抽象方法 void test54();//這也是抽象方法,這裏的public abstract也是能夠省略的。緣由同上 } interface B54 { void m2(); } interface C54{ void m3(); } interface D54{ void m4(); } interface E53 extends B54,C54,D54{ void m5(); } //implements是實現的意思 //因爲類是單繼承的,因此這裏使用新的關鍵字implements來實現 class MyClass implements B54,C54{ public void m2() {}//因爲m2原來是抽象方法,這裏咱們新的類必須覆蓋重寫m2方法 public void m3() {} } class F54 implements E54{ public void m2() {} public void m3() {} public void m4() {} public void m5() {} }
咱們按照上面的七個語法進行了舉例。
3、接口的做用(先看個例子吧,總結下次再說)
package com.bjpowernode.java_learning; public interface D54_3_CustomerService { void logout(); }
package com.bjpowernode.java_learning; public class D54_4_ImplementCustomer{ public static void main(String[] args) { //如下程序面向接口去調用 D54_3_CustomerService d1 = new D54_4_ImplementCustomerService();//多態 d1.logout();//底層類,類型是接口,能夠的是使用的接口中的方法,實際調用因爲底層是類,因此實際用的類的方法 } } class D54_4_ImplementCustomerService implements D54_3_CustomerService{ //對接口中的抽象方法進行實現 public void logout() { System.out.println("成功退出系統!"); } }
4、源碼:
D54_1_HungtySingtonMode.java
D54_2_InterfaceExercise.java
D54_3_CustomerService.java
D54_4_ImplementCustomer.java
地址:
https://github.com/ruigege66/Java/blob/master/D54_1_HungtySingtonMode.java
https://github.com/ruigege66/Java/blob/master/D54_2_InterfaceExercise.java
https://github.com/ruigege66/Java/blob/master/D54_3_CustomerService.java
https://github.com/ruigege66/Java/blob/master/D54_4_ImplementCustomer.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料