一、什么是EIT造型?
首先,我们先来了解类别有哪些?
- 一般(具象)类别:一般的函数。
- 抽象类别:有一个或者多个函数是抽象的。
- 纯粹抽象类别:所有函数都是抽象。也称接口(Interface)、卡榫函数(Hook函数)、抽象函数。
其次, 主动型 VS. 被动性API
- 主动型API:基类函数可以主动调用子类的函数。
- 被动性API: 子类函数调用基类的函数。
第三,IoC(Inversion of Control)机制
- IoC(Inversion of Control)机制,称为控制反转。即基类控制子类。
- 属于主动型API
了解以上三个概念,我们开始EIT造型了(以汽车来做比喻)
- E : Engine. 引擎 ,基类。
- I : Interface. 接口
- T : Tire. 轮胎,子类。
基本型:如图2
EIT变形(一):如图3
EIT变形(二):如图4
下面我们来谈谈EIT造型与设计模式的关系:
以 (Factory Method) 工厂模式 为例:
工厂模式是由两个EIT造型组成的。而两个EIT造型是怎么联系?如图7
图7中,实线的箭头表示 ConcreateCreator子类 实现 Creator基类 的抽象函数。虚线的箭头表示 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;
}
}
//调用
Creator creator = new ConcreteCreator();
Product product = creator.anOperation();
product.numberA = 10;
product.numberB = 30;
System.out.println("addSum = "+ product.calCulate()); // 40