EIT造型 + 内涵 = 设计模式

一、什么是EIT造型?

首先,我们先来了解类别有哪些?

  • 一般(具象)类别:一般的函数。
  • 抽象类别:有一个或者多个函数是抽象的。
  • 纯粹抽象类别:所有函数都是抽象。也称接口(Interface)、卡榫函数(Hook函数)、抽象函数。

其次, 主动型 VS. 被动性API

  • 主动型API:基类函数可以主动调用子类的函数。
  • 被动性API: 子类函数调用基类的函数。

第三,IoC(Inversion of Control)机制

  • IoC(Inversion of Control)机制,称为控制反转。即基类控制子类。
  • 属于主动型API

了解以上三个概念,我们开始EIT造型了(以汽车来做比喻)

  • E : Engine. 引擎 ,基类。
  • I : Interface. 接口
  • T : Tire. 轮胎,子类。
EIT造型 + 内涵 = 设计模式_第1张图片
图1.png

基本型:如图2

EIT造型 + 内涵 = 设计模式_第2张图片
图2.png

EIT变形(一):如图3


EIT造型 + 内涵 = 设计模式_第3张图片
图3.png

EIT变形(二):如图4


EIT造型 + 内涵 = 设计模式_第4张图片
图4.png

下面我们来谈谈EIT造型与设计模式的关系:

以 (Factory Method) 工厂模式 为例:


EIT造型 + 内涵 = 设计模式_第5张图片
图5.png
EIT造型 + 内涵 = 设计模式_第6张图片
图6.png

工厂模式是由两个EIT造型组成的。而两个EIT造型是怎么联系?如图7


EIT造型 + 内涵 = 设计模式_第7张图片
图7.png

图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

你可能感兴趣的:(EIT造型 + 内涵 = 设计模式)