帶你走進設計模式 內部類的世界

2021-10-01 03:51:36 字數 2320 閱讀 2147

單例模式:保證類只能存在乙個物件

懶漢式:呼叫功能的時候才建立物件

餓漢式:類第一次載入完成之後就建立物件

當多個人同時呼叫靜態方法時,懶漢容易建立不同物件

實現步驟:

構造器私有化

私有的靜態的該類的引用

公共的訪問方式

//餓漢式

public

class

single01

public

static single01 newinstance()

}

//懶漢式

public

class

singleton02

public

static singleton02 newinstance()

return single;

}}

靜態**:

真實角色需要和**角色實現相同的介面

**需要持有真實角色的引用

**行為

優點:減少與真實角色的交流,提高**的安全行,解耦,便於後期維護,**角色可以擴充套件功能

讓汽車廠生產汽車

內部類:類中定義類

當乙個類中的成員也是另外乙個事物的時候,這個事物就 可以使用內部類定義

分類:成員內部類

區域性內部類

靜態內部類

私有內部類

匿名內部類

內部類處於外部類成員位置

​ 是外部的成員,就可以使用成員修飾符

​ 是個類,有類的特性,繼承,實現介面。。。

注意:內部類中可以使用外部類中所有的內容,包括私有的

除了靜態內部類以外的內部類不可以定義靜態的內容,除了靜態的常量

在外部類中使用內部類中的成員,通過內部類的物件

在其他類中使用內部類中的成員,需通過外部類的物件生成內部類物件

內部類成員變數覆蓋外部成員變數,通過外部類.this.成員變數獲得外部類成員變數

成員內部類如果一旦被static關鍵字修飾,就是靜態內部類

注意:如果在外部類中使用靜態內部類中的成員,需要跟隨內部類物件使用,如果使用靜態內部類中的靜態內容,直接類名.呼叫

如果在靜態內部類中使用外部類的成員,需要跟隨外部類物件使用,如果使用外部類中的靜態內容,可以直接使用

在其他類中呼叫靜態內部類中的成員,需要建立物件:

外部類.內部類 引用名 = new外部類.內部類;

在其他類中呼叫靜態內部類中的靜態內容:

外部類.內部類.靜態內容;

成員內部類一旦被private修飾,就是私有內部類

私有內部類只能在當前所定義的外部類中使用,其他類中無法使用

在外部類中可以通過內部類的物件使用內部類中的內容,包括私有的

區域性內部類只能在當前所在的方法中使用,其他方法,其他類無法使用

當前所在的方法需通過內部類的物件來訪問內部類的成員內容

區域性內部類中使用到當前所在方法的引數時,這個引數預設被final修飾

​ 如果修改就不能在區域性內部類中使用

​ 如果在區域性內部類中使用就不能修改其引數的值

如果某個實現類本身沒有自己的作用,只是為了重寫某些抽象方法的,可以使用匿名內部類進行代替

jdk1.8的新特性

作用:用來簡化匿名內部類

前提:函式式介面

函式式介面:只有乙個抽象方法的介面就是函式式介面

檢查函式式介面:@functionalinte***ce

lambda表示式1:

p =()

->

;

lambda表示式2:如果方法體只有一句,可以省略{};

p =()

->system.out.

println

("222"

);

lambda表示式3:引數可以省略資料型別

p =

(i)-

>system.out.

println

("333"

);

lambda表示式4:如果只有乙個引數,可以省略()

p = i-

>system.out.

println

("444"

);

lambda表示式5:如果方法體只有一句,且是return ,可以同時省略return和{}; ,但是不可以只省略return

p = i-

>

555;

Python帶你走進鍊錶的世界

a 1 2,3 4 for i in range len a print id a i if i len a 1 break print id a i 1 id a i 下面是最終的執行結果 140722440987280 32140722440987312 32140722440987344 32...

設計模式(十二) 組合模式(內部類)

當發現需求中是體現部分與整體層次結構時,以及你希望使用者可以忽略組合物件與單個物件的不同,統一地使用組合結構中的所有物件時,就應該考慮組合模式。public class paydemo 分店 下面可以有加盟店 public class marketbranch extends market over...

帶你走進ATM的世界實戰篇

atm atm account 賬戶 balancelnquiry 查詢餘額 bankdatabase 銀行資料庫 cashdispenser 取款口 deposit 存款 depositslot 存款口 keypad 鍵盤 screen 螢幕 transaction 交易 withdrawal 取...