接口隔离原则要求编程人员将庞大臃肿的接口定义拆分成更小和具体的接口。接口只暴露类需要实现的方法。和单一职责原则类似,接口隔离原则只要要求接口在定义的时候,职责要单一,其‘隔离’主要是指对接口依赖的隔离。
将庞大的接口拆分成细粒度更小的接口,灵活性和扩展性更好,也更易于在类实现时遵守单一职责原则。
接口隔离提高了系统的内聚性,降低了系统的耦合性。
有利于代码的复用性。
我们通过代码来了解接口隔离原则
我们再以用户界面来展示
在iOS中接口指的就是协议(protocol)
下面我们演示一个错误的例子
protocol UserInterfaceProtocol{
var bannerData : String{ get }
var listData : String{ get }
func show()
}
class UserInterface : UserInterfaceProtocol{
//违反单一职责原则,一个类要尽量负责单一的功能类型
var bannerData: String { get {
return "广告数据加载完成"
}
}
var listData: String {
get {
return "列表数据加载完成"
}
}
func show() {
print("页面展示:\(self.bannerData),\(self.listData)")
}
}
let userInterface = UserInterface()
userInterface.show()
UserInterfaceProtocol这个接口同时进行了数据请求和刷新UI的功能,违背了单一职责原则,应该把功能类分开,新定义一个DataLoader类进行数据请求操作。并把接口的功能进行拆分,这样就可以把耦合的程度降到最低
protocol DataLoaderProtocol{
//接口的拆分,把原来show()方法分离出去
var bannerData : String{ get }
var listData : String{ get }
}
protocol UserInterfaceProtocol{
func show()
}
class DataLoader : DataLoaderProtocol{
//违反单一职责原则,一个类要尽量负责单一的功能类型
var bannerData: String { get {
return "广告数据加载完成"
}
}
var listData: String {
get {
return "列表数据加载完成"
}
}
}
class UserInterface : UserInterfaceProtocol{
func show() {
let dataloader = DataLoader()
print("页面展示:\(dataloader.bannerData),\(dataloader.listData)")
}
}
let userInterface = UserInterface()
userInterface.show()
网友评论