首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
必知必会的设计原则——接口隔离原则
返回列表
发新帖
必知必会的设计原则——接口隔离原则
[复制链接]
发表于 2023-2-10 09:17:57
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
设计原则系列文章
必知必会的设计原则——单一职责原则
必知必会的设计原则——开放封闭原则
必知必会的设计原则——依赖倒置原则
必知必会的设计原则——里氏替换原则
概述
1、 客户端不应该依赖它不需要的接口。
2、 一个类对另一个类的依赖应该建立在最小接口上。
3、接口应尽量细分,不要在一个接口中放很多方法。
接口分离和单一原则关系
单一职责:只做一件事 /影响类变化的原因只有一个。目的是你为了高内聚(模块内部的相似程度).
接口隔离:目的是为了低耦合(模块之间的依赖程度要低)。
未使用接口隔离原则的
代码
public interface IScore
{
void QueryScore();
void UpdateScore();
void AddScore();
void DeleteScore();
double GetSumScore();
double GetAvgScore();
void PrintScore();
void SendScore();
}
public class Teacher : IScore
{
public void AddScore()
{
throw new NotImplementedException();
}
public void DeleteScore()
{
throw new NotImplementedException();
}
public double GetAvgScore()
{
throw new NotImplementedException();
}
public double GetSumScore()
{
throw new NotImplementedException();
}
public void PrintScore()
{
throw new NotImplementedException();
}
public void QueryScore()
{
throw new NotImplementedException();
}
public void SendScore()
{
throw new NotImplementedException();
}
public void UpdateScore()
{
throw new NotImplementedException();
}
}
public class Student : IScore
{
public void AddScore()
{
throw new NotImplementedException();
}
public void DeleteScore()
{
throw new NotImplementedException();
}
public double GetAvgScore()
{
throw new NotImplementedException();
}
public double GetSumScore()
{
throw new NotImplementedException();
}
public void PrintScore()
{
throw new NotImplementedException();
}
public void QueryScore()
{
throw new NotImplementedException();
}
public void SendScore()
{
throw new NotImplementedException();
}
public void UpdateScore()
{
throw new NotImplementedException();
}
}
复制
代码
以上定义成绩接口,接口里面包含的方法分别为查询成绩,添加成绩、修改成绩、删除成绩、成就求和,成绩求平均数、打印成绩、发送成绩。Teacher和student类都实现IScore的方法 ,有些方法教师或学生根本没必要实现。
使用接口隔离原则的
代码
public interface ITeacherScore
{
void AddScore();
void DeleteScore();
double GetSumScore();
double GetAvgScore();
void PrintScore();
void SendScore();
}
public class Teacher2 : ITeacherScore
{
public void AddScore()
{
throw new NotImplementedException();
}
public void DeleteScore()
{
throw new NotImplementedException();
}
public double GetAvgScore()
{
throw new NotImplementedException();
}
public double GetSumScore()
{
throw new NotImplementedException();
}
public void PrintScore()
{
throw new NotImplementedException();
}
public void SendScore()
{
throw new NotImplementedException();
}
}
public interface IStudentScore
{
void QueryScore();
void PrintScore();
}
public class Student2 : IStudentScore
{
public void PrintScore()
{
throw new NotImplementedException();
}
public void QueryScore()
{
throw new NotImplementedException();
}
}
复制代码
以上代码使用接口隔离原则后,接口职责很清晰,定义的接口不再像之前的大而全。
总结
接口隔离原则和单一职责原则很像,关于二者之间的关系在开头概述里面已经描述,如有疑问欢迎与我交流。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
继续阅读请点击广告
回复
使用道具
举报
返回列表
tsx81429
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表