1. 程式人生 > >Java中的單例模式、工廠模式、介面回撥、異常

Java中的單例模式、工廠模式、介面回撥、異常

for迴圈:起點為基本資料型別,包括boolean .
equals():重寫原因,希望在地址不同但內容相同時也能返回true。
匿名物件:直接new出物件,不需要物件名來接收。
new Person().show();
內部類:類中的“屬性”無法簡單的用屬性或方法來描述的時候,或者能用屬性表達但屬性過多時考慮使用內部類。
匿名內部類:作為介面或者抽象類的子類實現的
如果使用自定義一個類去實現抽象類或者介面中的方法,此類若只使用以一次會導致開發目錄結構混亂。故使用此種做法。常見用法:作為方法的引數使用。
Java專案中的bin資料夾是binary存放目錄。內部類的位元組檔名字格式:外部類1.

class2.class 示例:Staticoutter$Inner

介面回撥

回撥:指的是回撥介面中重寫的方法
因為單純去實現介面中的方法,介面中的方法內容相對比較固定,不夠靈活。導致機構混亂。
步驟
1. 定義類,在類中定義一個內部介面。
2. 定義該類的構造方法,構造方法中的一個引數就是介面型別的
3. 在此類中定義一個方法呼叫介面介面中的抽象方法-方法賦值操作。
4. 測試類中建立類物件,需要匿名內部類(重寫介面方法)。
5. 不同的物件重寫方法時可以有不同的內容(有點具體體現)。

設計模式:一種被反覆使用,多數人知曉的程式碼經驗總結。

單例模式

在開發中一直使用的是該類的同一個物件。即在開發中該類始終只建立一個物件。比如Windows作業系統中始終只有一個任務正在列印。
步驟:
1. 私有化(private)類的構造方法(防止在其它地方new物件)
2. 自己建立(或申明)物件
3. 提供共有(public)的方法給外部提供自己建立的物件。
A. 餓漢式(著急建立物件)
Public Class A{
//構造方法私有化
Private A(){}
Private static final A a=new A();//建立本類物件
Public staticA getInstance(){
Return a;
}
}
B. 懶漢式


Public class B{
Private B(){}
Private static final B b;
Public static B getInstance(){
If(b==null){
b=new B();
}
Return b;
}
}

工廠模式

負責建立物件,便於統一管理多個物件。
在工廠類中定義產生物件的方法getInstance(),不同的物件根據自身特點建立不同物件。

異常

Throwable 類是 Java 語言中所有錯誤或異常的超類。
Error: 執行應用程式時出現的較大問題,一般很難解決,如:記憶體溢位(outOfMemoryError)等。
異常:應用程式本身可以處理的問題。
注意:主要在於應用程式本身能否解決。
分類:檢查異常(非執行)和非檢查(執行異常);
常見到的異常都是執行時異常,且都有對應的異常類。
處理異常:
1. 丟擲 throws(方法後面)
處理:try catch
Throw:方法內部表示丟擲異常物件。示例:
Exception e = newException();
// throw:負責向外扔異常物件
throw e;
2. 捕獲(自己處理或者繼續丟擲)
格式:
try{
可能存在異常程式碼
}catch(Exception e){
如果存在異常則會進入的程式碼塊 異常處理程式碼塊
}finally{
無論是否有異常,都會執行程式碼
}
使用方式:
1.try結合一個catch
2.try結合多個catch語句使用
e.getMessage();//獲取異常詳細資訊
e.printStackTrace();//輸出紅色錯誤程式碼行 輸出堆軌跡
3.try..catch…finally
4.try…finally
總結:
1.try必須和catch或者finally結合使用 2.try可以有多個catch但只能有一個finally
經典面試題:

public static void main(String[] args) {
try {
int t=10;
System.out.println("------>"+t);
return;
//System.exit(0);// 終止當前正在執行的 Java 虛擬機器。
} catch(Exception e) {
} finally {
System.out.println("啦啦啦");
}
System.out.println("此話在finally後面");
}

注意:
1.finally在return之前執行;
2.一旦遇到system.exit(),則不再執行finally,即system.exit()用於結束finally的執行。
自定義異常:
1. 自定義異常類繼承Exception
2. 在呼叫中throw出自定義異常類物件。
throw new MyException(“使用者名稱小於6位”);