C#设计模式六大原则之--接口隔离原则

设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 接口隔离原则。

接口隔离原则(Interface Segregation Principle)

接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 其中单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。遵循接口隔离原则是为了约束接口、降低类对接口的依赖性。

例如,

1)一般的反面设计实现

复制代码
using System;
namespace ConsoleApplication
{
    class Program
    {
        //定义接口动物
        public interface IAnimal
        {
            void Eat();//吃行为
            void Walk();//行走行为
            void Run();//奔跑行为
            void Fly();//飞翔行为
            void Glide();//滑翔行为
        }
        //动物狗实现类
        public class Dog : IAnimal
        {
            public void Eat()
            {
                Console.WriteLine("吃狗粮");
            }
            public void Walk()
            {
                Console.WriteLine("四条腿走路");
            }
            public void Run()
            {
                Console.WriteLine("快跑");
            }
            //对狗来说无用的接口方法
            public void Glide() { }
            public void Fly() { }
        }
        //动物鸟实现类
        public class Bird : IAnimal
        {
            public void Eat()
            {
                Console.WriteLine("吃虫子");
            }
            public void Glide()
            {
                Console.WriteLine("在空中滑翔");
            }
            public void Fly()
            {
                Console.WriteLine("起飞");
            }
            //对鸟来说无用的接口方法
            public void Walk() { }
            public void Run() { }
        }
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            dog.Eat();
            dog.Walk();
            dog.Run();
            Bird bird = new Bird();
            bird.Eat();
            bird.Glide();
            bird.Fly();
            Console.ReadKey();
        }
    }
}

2)接口隔离原则的实现

复制代码
using System;
namespace ConsoleApplication
{
    class Program
    {
        //定义接口动物
        public interface IAnimal1
        {
            void Eat();//吃行为
        }
        public interface IAnimal2
        {
            void Walk();//行走行为
            void Run();//奔跑行为
        }
        public interface IAnimal3
        {
            void Fly();//飞翔行为
            void Glide();//滑翔行为
        }
        //动物狗实现类
        public class Dog : IAnimal1, IAnimal2
        {
            public void Eat()
            {
                Console.WriteLine("吃狗粮");
            }
            public void Walk()
            {
                Console.WriteLine("四条腿走路");
            }
            public void Run()
            {
                Console.WriteLine("快跑");
            }
        }
        //动物鸟实现类
        public class Bird : IAnimal1, IAnimal3
        {
            public void Eat()
            {
                Console.WriteLine("吃虫子");
            }
            public void Glide()
            {
                Console.WriteLine("在空中滑翔");
            }
            public void Fly()
            {
                Console.WriteLine("起飞");
            }
        }
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            dog.Eat();
            dog.Walk();
            dog.Run();
            Bird bird = new Bird();
            bird.Eat();
            bird.Glide();
            bird.Fly();
            Console.ReadKey();
        }
    }
}
相关推荐
小程故事多_802 小时前
Claude Code 全流程梳理,从需求输入到工具执行的完整逻辑
人工智能·设计模式·智能体·claude code·harness
cui17875685 小时前
排队免单模式:从爆火到优化,探寻实体商业新出路
大数据·人工智能·设计模式·个人开发·设计规范
医疗信息化王工5 小时前
26种不良事件表单的通用设计模式与实现
设计模式
mounter6255 小时前
【内核精进】Linux Kernel 设计模式(一):引用计数与可见性的艺术
linux·设计模式·linux kernel
workflower6 小时前
机器人应用-高空立面清洁
人工智能·深度学习·设计模式·机器人·软件工程·软件构建
CPUOS20106 小时前
嵌入式C语言高级编程之接口隔离原则
c语言·网络·接口隔离原则
likerhood6 小时前
设计模式:原型模式(Prototype Pattern)java版本
java·设计模式·原型模式
实在太懒于是不想取名6 小时前
STM32N6的开发日记(6):用ISP中间件点亮IMX335相机的专业画质
stm32·嵌入式硬件·接口隔离原则
我不是懒洋洋19 小时前
自动化构建工具:make与Makefile从入门到精通
简单工厂模式·接口隔离原则·依赖倒置原则·合成复用原则·单一职责原则
小程故事多_8021 小时前
从Claude Code源码中,拆解13个可直接复用的Agentic Harness设计模式(生产级实战解析)
人工智能·设计模式·智能体·claude code·harness