類工廠方法

2021-07-12 04:24:24 字數 1451 閱讀 5984

什麼是類工廠方法:

用於快速建立物件的類方法, 稱之為類工廠方法

用於給物件分配和初始化這塊儲存空間

類工廠方法是蘋果的乙個規範:

1.一定是類方法 +

2.方法名稱以類的名稱開頭, 首字母小寫

3.一定有返回值, 返回值是id/instancetype

+ (instancetype)person;

+ (instancetype)personwithage:(int)age;

+ (instancetype)person

+ (instancetype)personwithage:(int)age

類也是乙個物件, 類物件會在這個類第一次被使用的時候建立

有了類物件, 就可以通過類物件來建立例項物件

例項物件中有乙個isa指標,指向自己的類物件 類物件中儲存了當前物件所有的物件方法

當例項物件呼叫方法的時候, 會根據例項物件中的isa指標取對應的類物件中查詢

1.如何獲取類物件

[例項物件 class];  [類名 class];
person *p1 = [[person alloc] init];

person *p2 = [[person alloc] init];

/*乙個類在記憶體中只有乙份類物件*/

class c1 = [p1 class];

class c2 = [p2 class];

class c3 = [person class];

// 位址相同

nslog(@"c1 = %p, c2 = %p, c3 = %p", c1, c2, c3);

2.類物件的應用場景

// 只要程式啟動就會將所有類的**載入到記憶體中, 放到**區

// load方法會在當前類被載入到記憶體的時候呼叫, 有且僅會呼叫一次

// 如果存在繼承關係, 會先呼叫父類的load方法, 再呼叫子類的load方法

+ (void)load

// 當類物件第一次被建立出來的時候

// initialize方法在整個程式的執行過程中只會被呼叫一次, 無論你使用多少次這個類都只會呼叫一次

// initialize用於對某乙個類進行一次性的初始化

// initialize和load一樣, 如果存在繼承關係, 會先呼叫父類的initialize再呼叫子類的initialize

簡單工廠方法,工廠方法,抽象工廠方法

以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

靜態工廠方法和例項工廠方法

在學習spring bean的例項化方式的時候遇到的乙個問題,spring bean例項化有3種方法 1 構造器生成 2 靜態工廠方法 3 例項工廠方法 那麼問題來了,什麼是靜態工廠方法,什麼是例項工廠方法?靜態工廠方法 顧名思義就是直接可以通過靜態方法來例項化乙個物件 如 public class...