C#设计原则:5.接口隔离原则 u3d学习总结笔记本

本文深入解析接口隔离原则(ISP),阐述了如何通过细分接口提高代码灵活性和可维护性,避免高层类依赖多余接口,实现高内聚低耦合的设计目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

接口隔离原则(ISP)

Interface Segregation Principe,简称:ISP。

类的依赖关系应建立在最小接口上,不要都塞在一起。高层类不需要多余的接口。

 

问题由来

写工具的时候,总会有考虑不全面的情况,例如根据单一职责原则把相关功能接口都综合集中在了一个类里面。

然后导致在使用时,发现很多功能只会使用其中一个,其余功能完全是多余的。

 

解决方案

通过细分接口功能,将综合接口拆分成多个独立功能。

依赖几个专用的接口要比依赖一个综合的接口更灵活,提高系统的灵活性和可维护性。

接口隔离原则就是要求只提供尽可能小的接口,需要高内聚,不需要的行为要隐藏起来。

 

代码例子:

在Start里声明出A1,A2 类

很多时候我使用移动的方法只是针对一种类型

float,vector2,vector3...等等

若是对 float 使用,这个时候A1里的 vector2 和 vector3 的方法就等于没用了

 

而A1则是实现了细分接口,不会有多余功能。

 

结果:

 

void Start()
{
	A1 a1 = new A1(); //新建移动类;
	a1.move_Vector1(); //使用功能

	A2 a2 = new A2(); //新建移动类;
	a2.move_Vector1(); //使用功能
}

 

抽象接口定义:细分

public interface I1 //细分接口 一维移动
{
	void move_Vector1();
}

public interface I2 //细分接口 二维移动
{
	void move_Vector2();
}

public interface I3 //细分接口 三维移动
{
	void move_Vector3();
}

 

抽象接口定义:综合

public interface I4 //综合接口 移动方法集合
{
	void move_Vector1();
	void move_Vector2();
	void move_Vector3();
}

 

工具实现接口方法

public class A1 : I4 //实现综合接口
{
	public void move_Vector1()
	{
		Debug.Log("A1曲线移动方法:一维");
	}

	public void move_Vector2()
	{
		Debug.Log("A1曲线移动方法:二维");
	}

	public void move_Vector3()
	{
		Debug.Log("A1曲线移动方法:三维");
	}
}



public class A2 : I1 //实现细分接口
{
	public void move_Vector1()
	{
		Debug.Log("A2曲线移动方法:一维");
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值