一、什么是EIT造型?
首先,我們先來了解類別有哪些?
- 一般(具象)類別:一般的函數(shù)。
- 抽象類別:有一個或者多個函數(shù)是抽象的。
- 純粹抽象類別:所有函數(shù)都是抽象。也稱接口(Interface)、卡榫函數(shù)(Hook函數(shù))、抽象函數(shù)。
其次, 主動型 VS. 被動性API
- 主動型API:基類函數(shù)可以主動調(diào)用子類的函數(shù)。
- 被動性API: 子類函數(shù)調(diào)用基類的函數(shù)。
第三,IoC(Inversion of Control)機制
- IoC(Inversion of Control)機制,稱為控制反轉(zhuǎn)。即基類控制子類。
- 屬于主動型API
了解以上三個概念,我們開始EIT造型了(以汽車來做比喻)
- E : Engine. 引擎 ,基類。
- I : Interface. 接口
- T : Tire. 輪胎,子類。
圖1.png
基本型:如圖2
圖2.png
EIT變形(一):如圖3
圖3.png
EIT變形(二):如圖4
圖4.png
下面我們來談?wù)凟IT造型與設(shè)計模式的關(guān)系:
以 (Factory Method) 工廠模式 為例:
圖5.png
圖6.png
工廠模式是由兩個EIT造型組成的。而兩個EIT造型是怎么聯(lián)系?如圖7
圖7.png
圖7中,實線的箭頭表示 ConcreateCreator子類 實現(xiàn) Creator基類 的抽象函數(shù)。虛線的箭頭表示 new ConcreteProduct對象。
代碼如下:
public abstract class Creator {
public Product anOperation(){
return factoryMethod();
}
public abstract Product factoryMethod();
}
public class ConcreteCreator extends Creator {
@Override
public Product factoryMethod() {
Product add = new ConcreteProduct();
return add;
}
}
public abstract class Product {
public float numberA;
public float numberB;
public abstract float calCulate();
}
public class ConcreteProduct extends Product {
@Override
public float calCulate() {
return numberA + numberB;
}
}
//調(diào)用
Creator creator = new ConcreteCreator();
Product product = creator.anOperation();
product.numberA = 10;
product.numberB = 30;
System.out.println("addSum = "+ product.calCulate()); // 40