标签:规约 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. 优先从某种角度去界定,而非从整体上界定,留有余地,方便扩展;
标签:规约 not 连接 接口 分享图片 smon 角度 find bsp
原文地址:https://www.cnblogs.com/wjcdx/p/9123488.html