接口起到了约束和抽象出功能的作用约束
例如java中collection接口继承iterable接口,使得集合都具有迭代器遍历的功能抽象出功能。当继承了iterable接口的时候,这些集合类都拥有了这项功能,迭代器遍历的功能
例如线程中,要实现一个线程需要继承thread,然后写其中的run方法,这时可以把run方法抽象出来,用一个接口Runnable接口定义run方法,当Thread继承了这个接口,这时我们可以在构造方法中传入runnable的实现类,使得run方法可以从中抽象出来
这其实也算是接口的第三个作用
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1, num2);
}
}
主函数
public class StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
其实算是抽象出功能的一种延申,策略模式将很多功能组合起来(通过很多类去实现一个接口,每个类中实现不同的功能),这些类等待着被使用。而最常见的使用方式(不被外界发现,类似spring中的注入,我所写的类中需要哪个功能,就将哪个功能对应的类注入到我的类中)。说简单点,就是我的类中存在一个接口变量,然后要对其进行赋值,构造函数中则传入前面的功能实现类。这就是策略模式。
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:接口三大功能:约束,抽象,策略组合