http://liuwaner118.iteye.com/blog/2271655
引言:
"面相接口编程" 是OO 编程人员经常会碰到的名词, 初学者可能在刚开始的时候,对这些名词不是很理解,过于这个概念的资料,网上一搜也是一大片.不过相比于其他文章较为抽象的解释,本文想通过一个比较接地气的例子来阐述下 " 面相接口编程" (面相抽象编程)的某些个方面的特点, 不敢保证让你完全掌握"面相接口编程"的概念,但我想如果你仔细阅读如下文字的话,最起码再下次遇到这个名词的时候,会稍微有点感受.
一、例一:
好了,官方的定义我就不摆了,直接说例子. 以java为例哈. 比如说现在有一个集合 这个集合里面呢放男人(Man类),这个 Man类呢有两个属性,(height,wearShirt),分别对应身高,和"是否穿了衬衫" 这两个属性. 以上这些是初始条件, 好了,接下来博主就要发问了: 写一个工具类,请找出集合中帅的人? 那每个人对于帅的定义不同, 可能有些女孩子认为180cm以上的就挺帅的(
肤浅..),又有可能有些人认为穿白衬衫的男孩子就挺帅的. 那这句话怎么说才正确呢? , 我说,满足帅的条件的男人是帅的. 这句话准没错吧? 这里的"帅的条件" 就是一个抽象的概念, 抽象一般来说都是较为稳定的,就像上面我说的"满足帅的条件的人都是帅的" 这句话在任何情况下都是准确的,所以面相抽象(接口)的代码也是稳定的.(就比如如下代码中ListUtils工具类的 filter方法,无论帅的标准怎么变,这段代码的逻辑都是正确的)., 以下是完整的代码.
- public interface Rule<T> { //帅的标准
- boolean meetCondition(T t); //是否满足帅的条件
- }
- // 工具类
- class final ListUtils{
- public static <T> List<T> filter(List<T> list, Rule<T> rule) {
- List<T> result = new ArrayList<T>();
- for