版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程1、接口分离原则定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法(也就是图中红色字体标记的方法),但由于实现了接口I,所以也必须要实现这些用不到的方法。2、接口I、类A、类B代码实现interface
I
{
public
void
method1();
public
void
method2();
public
void
method3();
public
void
method4();
public
void
method5();
}
class
A{
public
void
depend1(I
i){
i.method1();
}
public
void
depend2(I
i){
i.method2();
}
public
void
depend3(I
i){
i.method3();
}
}
class
B
implements
I{
public
void
method1()
{
System.out.println("类B实现接口I的方法1");
}
public
void
method2()
{
System.out.println("类B实现接口I的方法2");
}
public
void
method3()
{
System.out.println("类B实现接口I的方法3");
}
//对于类B来说,method4和method5不是必需的,但是由于接口A中有这两个方法,
//所以在实现过程中即使这两个方法的方法体为空,也要将这两个没有作用的方法进行实现。
public
void
method4()
{}
public
void
method5()
{}
}
3、类C、类D和调用代码实现classC{publicvoiddepend1(Ii){i.method1();}publicvoiddepend2(Ii){i.method4();}publicvoiddepend3(Ii){i.method5();}}
classDimplementsI{publicvoidmethod1(){System.out.println("类D实现接口I的方法1");}//对于类D来说,method2和method3不是必需的,但是由于接口A中有这两个方法,
//所以在实现过程中即使这两个方法的方法体为空,要将这两个没有作用的方法进行实现。
publicvoidmethod2(){}publicvoidmethod3(){}
publicvoidmethod4(){System.out.println("类D实现接口I的方法4");}publicvoidmethod5(){System.out.println("类D实现接口I的方法5");}}
}
publicclassClient{publicstaticvoidmain(String[]args){Aa=newA();a.depend1(newB());a.depend2(newB());a.depend3(newB());Cc=newC();c.depend1(newD());c.depend2(newD());c.depend3(newD());}}4改进方法如果接口过于臃肿,只要接口中出现的方法,不管对依赖于它的类有没有用处,实现类中都必须去实现这些方法,这显然不是好的设计。如果将这个设计修改为符合接口隔离原则,就必须对接口I进行拆分。在这里我们将原有的接口I拆分为三个接口,拆分后的设计如下图所示:注意事项:接口尽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年iu的拼音说课稿
- 2025-2026学年公开课说课稿社会
- 2026下半年下半年初中历史教资面试人物真题试卷
- 2025-2026学年5秋天的怀念说课稿
- 《液体压强》课件
- 《含山店梦觉作》(韦庄)《宿渔家》(郭震)课件
- 课文15《文具的家》
- 2026年新时代公民道德建设政策落实试题及答案
- 2026工伤考试题库及答案
- 2025年初中美术国测模拟试题及参考答案
- 2026秋人教版(新教材)一年级数学(上)第四单元学情测试卷含参考答案
- 2026青岛胶州市中云街道办事处面向社会公开招聘非在编工作人员笔试参考题库及答案解析
- 2026年上海市普通高校统一文化考试试卷(全科含详细答案解析)
- 2026年度反洗钱阶段考试培训试考试题库(含答案)
- 三类医疗器械许可证考题库(附答案)
- 【沪教版必修第一册】高一数学第4章幂函数、指数函数与对数函数(单元复习课件)
- 饮用水微生物污染全流程防控方案
- 2025年西部天然气招聘笔试题目及答案
- 2025年公安最美家庭先进事迹材料范文
- 低压电工专业知识培训课件
- 2025秋新人教版八上数学教学设计-14.2《三角形全等的判定(第5课时 HL)》(教学设计)
评论
0/150
提交评论