于<买主来了>之前,架构师基于已具备的知识,来决定接口<I>,
然后把其知识(又称强龙知识)写在基类<E>里。
基于<I>,当买主出现了,才把买主的知识(又称地头蛇知识)写入子类<T>里.
然后,两者汇合,成为完整的知识了.
<E>是控制点,透过<I>来调用<T>.
例子:
如上面这个题,可以做如下思考:
- 在E里面有一个 固定 算法.
- 关于E里面的算法有个不 稳定的因素是 值N的实际值. 那么这个N 值应该在有实际需求的时候设置.
- 由于上面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());`
`}`
}