码迷,mamicode.com
首页 > 编程语言 > 详细

Java-接口的本质

时间:2018-06-01 22:19:09      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:规约   not   连接   接口   分享图片   smon   角度   find   bsp   

https://mp.weixin.qq.com/s/tEVw0j18rX2hxt-guXQJ-w

大道至简,本质往往是很朴素的。

 本质:

类是主体,接口是主体之间交流沟通的规约。

 

位置:
1. 主体站两旁,连接接口的管道在两者之间;
2. 接口位于主体侧面;
3. 父类在主体类的头顶上,父类是对子类高一个概念层次的抽象(概念宽泛化);

 技术分享图片

 

接口与主体的关系:

1. 两个沟通的主体,一个使用接口,一个实现接口;
2. 接口是动作的集合,实现接口,表明主体有能力执行接口约定的动作;
3. 使用接口的主体不需要实现接口,但需要知道接口:
  a. 不知道约定的常量,则两方所指会有所混淆;
  b. 不知道方法签名会被拒绝服务;
  c. 不知道方法调用顺序,会被拒绝服务;
  d. 使用接口的第一步可以是认证,不具备相应信息则会被拒绝;
4. 接口是主体的组成部分:
  a. 接口是实现接口的主体的能力;
  b. 接口是使用接口的主体的知识,或者说使用接口也是一种能力;
5. 主体可以具有多种能力,进行多种沟通,所以可以实现多个接口;

 

规约:
基本的:
1. 常量用以约定两方所指是同一个东西;
2. 方法签名以约定如果要对方做什么,需要提供什么;
组合的:
3. 如果沟通需要多个步骤,则需要约定调用方法的顺序;
这种规约Java接口无法实现,需要使用文档来说明和规范;


举例:
1. 主体同学甲和主体同学乙;
2. 主体乙有冰淇淋、冰棍儿,具有卖冰淇淋、冰棍儿的能力;
3. 主体乙把冰淇淋标记为第一种商品,冰棍儿标记为第二种商品;
4. 主体甲有钱;
5. 主体甲知道主体乙卖东西;
6. 主体甲知道第一种商品是冰淇淋;
7. 主体甲把钱给主体乙,并告诉他要买第一种商品;
8. 主体乙确认钱足够,并把第一种商品交付给主体甲;
9. 主体甲拿到冰淇淋;

 

Java描述:
1. ManJia, ManYi;

2.

interface Seller {
    int PRODUCT_BQL = 0;
    int PRODUCT_XG  = 1;
    Product sell(Money money, int productNumber);
}
class ManYi implements Seller {
    Product sell(Money money, int productNumber) {
        if (isMoneyNotEnough(money)) {
            return null;
        }
        
        if (productNumber == PRODUCT_BQL) {
            return findBQL();
        }
    }
}

 

4.

class ManJia {
    Money money = Dad.give(100);
    ManYi seller = Find.found();
    
    public void buy() {
        Product bql = seller.sell(money, Seller.PRODUCT_BQL);
    }
}

 

父类和接口:
1. 父类和接口是不同的概念,概念不同、位置不同;
2. 子类做为一个整体进行抽象,提升一个概念层次(泛化),成为父类;
接口是对子类部分能力的抽象;
3. 父类的概念比子类宽泛,子类在概念上无法脱离父类的范畴:白马始终是马;
接口是实现主体的一种能力,从这种能力的角度看,主体才是接口要表达的概念:
主体乙在卖东西的时候才是Seller;

 

为什么优先使用接口,而非抽象父类:
1. 优先从某种角度去界定,而非从整体上界定,留有余地,方便扩展;

 

Java-接口的本质

标签:规约   not   连接   接口   分享图片   smon   角度   find   bsp   

原文地址:https://www.cnblogs.com/wjcdx/p/9123488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!