面向对象编程的 SOLID 原则 - 接口隔离原则 - ISP

接口隔离原则

隔离意味着保持独立,接口隔离原则是关于接口的独立。

该原则描述了很多客户端特定的接口优于一个多用途接口。客户端不应该强制实现他们不需要的函数。

这是一个简单的原则,很好理解和实践,直接看例子。


public interface ParkingLot {

	void parkCar();	// Decrease empty spot count by 1
	void unparkCar(); // Increase empty spots by 1
	void getCapacity();	// Returns car capacity
	double calculateFee(Car car); // Returns the price based on number of hours
	void doPayment(Car car);
}

class Car {

}

我们定义了一个非常简单的停车场。这是按小时付费的停车场,不考虑免费的情况。


public class FreeParking implements ParkingLot {

	@Override
	public void parkCar() {
		
	}

	@Override
	public void unparkCar() {

	}

	@Override
	public void getCapacity() {

	}

	@Override
	public double calculateFee(Car car) {
		return 0;
	}

	@Override
	public void doPayment(Car car) {
		throw new Exception("Parking lot is free");
	}
}

停车场接口组合了两个事情:停车相关逻辑(停车、取车、获取车位信息)以及支付相关逻辑。

但是这太具体了。即使是 FreeParking class 也要必须实现不相关的支付相关的方法。让我们隔离接口。

 

现在停车场更干净了。有了新的 model,可以更进一步把 PaidParkingLot 分割一下以支持更多的支付类型。

现在我们的 model 更灵活、可扩展,客户端无需实现任何不相关的逻辑,因为只在停车场接口实现了停车相关的函数。

 

 

 

 

posted @   易先讯  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2022-07-29 智能机器人方案
2022-07-29 这4个方法将提高你的理解力,成为一个超强学习达人!
2019-07-29 Crond服务+Shell实现秒级任务
2019-07-29 全栈工程师
2019-07-29 nginx配置https后,网站出现无法访问情况
2019-07-29 shell文件报错syntax error near unexpected token '$'\r''
点击右上角即可分享
微信分享提示