C# 设计原则 之 接口分离 原则

接口分离 原则 就是 为了对 接口的 进一步 细分,实现 低耦合,比如 公司 中的,各个部门,如财务,销售,技术 等,都是为了 低耦合 设计的。

下面举例 说明:

1.1没有遵循 接口分离的接口设计

namespace 接口分离
{
    public class Program
    {
        static void Main(string[] args)
        {
           
        }
    }
    
    public interface iMessage
    {
        //修改成绩
        void AmandScore();
        //添加成绩
        void AddScore();
        //删除成绩
        void DelScore();
        //查询成绩
        void SelectScore();
        //打印成绩
        void PrintScore();
    }

}

1.2如果有老师类需要继承此模块接口,完全没有问题,因为老师有 这个模块的所有权限

namespace 接口分离
{
    public class Program
    {
        static void Main(string[] args)
        {
           
        }
    }
    
    public interface iMessage
    {
        //修改成绩
        void AmandScore();
        //添加成绩
        void AddScore();
        //删除成绩
        void DelScore();
        //查询成绩
        void SelectScore();
        //打印成绩
        void PrintScore();
    }
    //老师继承 iMessage 没有问题,因为老师 应当 有此所有权限
    public class Teacher : iMessage
    {

    }
}

1.3如果有个学生类 需要继承此 模块接口,就有问题了,学生类需要实现模块中每个接口,但是 学生只能有 查询成绩 与打印成绩的权限。

namespace 接口分离
{
    public class Program
    {
        static void Main(string[] args)
        {
           
        }
    }
    
    public interface IMessage
    {
        //修改成绩
        void AmandScore();
        //添加成绩
        void AddScore();
        //删除成绩
        void DelScore();
        //查询成绩
        void SelectScore();
        //打印成绩
        void PrintScore();
    }
    public class Teacher : IMessage
    {

    }
    //这里就不符合 逻辑了,因为学生 只能有 查询成绩与 打印成绩的权限,不能实现其他接口的权限
    public class Student: IMessage
    {

    }
}

2解决方法就需要把 IMessage接口模块 在做细分,分为 学生和教师,学生类和教师类分别继承IMessageTeacher和IMessageStudent。下面例程就是对于上面问题的解决,从而实现 接口分离 原则

namespace 接口分离
{
    public class Program
    {
        static void Main(string[] args)
        {
           
        }
    }
    
    public interface IMessageTeacher
    {
        //修改成绩
        void AmandScore();
        //添加成绩
        void AddScore();
        //删除成绩
        void DelScore();
    }
    public interface IMessageStudent
    {
        //查询成绩
        void SelectScore();
        //打印成绩
        void PrintScore();
    }
    public class Teacher : IMessageTeacher, IMessageStudent
    {

    }
    public class Student: IMessageStudent
    {

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值