于<买主来了>之前,架构师基于已具备的知识,来决定接口<I>,

然后把其知识(又称强龙知识)写在基类<E>里。

基于<I>,当买主出现了,才把买主的知识(又称地头蛇知识)写入子类<T>里.

然后,两者汇合,成为完整的知识了.

<E>是控制点,透过<I>来调用<T>.

例子:

如上面这个题,可以做如下思考:

  1. 在E里面有一个 固定 算法.
  2. 关于E里面的算法有个不 稳定的因素是 值N的实际值. 那么这个N 值应该在有实际需求的时候设置.
  3. 由于上面1,2。那么就需要一个I 接口来获得具体的N值. 那么就需要一个实际的需求T来实现I接口. 那么就需要一个抽象的方法让在E里面能够通过I的抽象方法来调用T里面关于抽象方法的实现.

大概的类图如下:

代码如下:

interface LimiteOfAdd{

`abstract int getLimite();`

}

class Tire implements LimiteOfAdd{

`int mNumber;`

`public Tire(int number){`

    `mNumber = number;`

`}`

`@Override`

`public int getLimite() {`

    `// TODO Auto-generated method stub`

    `return mNumber;`

`}`

}

class Engine {

`LimiteOfAdd mLimite ;`

`Engine(LimiteOfAdd  la){`

    `mLimite = la;`

`}`

`public int add(){`

    `int number  = 0;`

    `if(mLimite != null){`

        `for (int i = 1 ; i <= mLimite.getLimite(); i++){`

        `number += i;`

    `}`

`}`

`return number;`

`}`

}

public class Test5 {

public static void main(String[] args) {

`// TODO Auto-generated method stub`

`Engine  engine = new Engine(new Tire(5));`

`System.out.println("test5 ,the total number :"+engine.add());`

`}`

}

results matching ""

    No results matching ""