- 加入我们做一个功能的时候那个可以分成多个步骤,步骤一、步骤二、步骤三...,分别处理对象1、对象2、对象3...,
- 方法1(处理对象1)
- 方法2(处理对象2)
- 方法3 (处理对象3)
- 这样的话这个类还有其他功能,这样这个类虽然把方法分开了看的比较清晰但是代码量还是很多的。
- 我们可以创建3个类,分别在三个不同类中掉方法
- 对象1调用对象方法1
- 对象2调用对象方法2
- 对象3调用对象方法3
- 这样就简化了
- 但是这样每次都要写三次还是比较麻烦,假如多次使用,还是有点麻烦的
- 我们可不可以一个类调用三个类的方法呢,或者一个类调用对象1方法1一次,对象2方法2两次呢
- 一个手机对外的统一接口
import Foundation
// 角色一: 系统对外统一接口
class Phone {
var photo: PhotoProtocol
var call: CallProtocol
var music: MusicProtocol
init() {
self.photo = Photo()
self.call = Call()
self.music = Music()
}
func takePhoto() {
self.photo.takePhoto()
}
func takeCall() {
self.call.call()
}
func playMusic() {
self.music.playMusic()
}
}
复制代码
import Foundation
// 角色二: 子系统接口
protocol PhotoProtocol {
func takePhoto()
}
复制代码
import Foundation
class Photo: PhotoProtocol {
func takePhoto() {
print("拍照中...")
}
}
复制代码
import Foundation
// 角色二: 子系统接口
protocol CallProtocol {
func call()
}
复制代码
import Foundation
class Call: CallProtocol {
func call() {
print("正在打电话...")
}
}
复制代码
import Foundation
// 角色二: 子系统接口
protocol MusicProtocol {
func playMusic()
}
复制代码
import Foundation
class Music: MusicProtocol {
func playMusic() {
print("音乐播放中...")
}
}
复制代码
let phone = Phone()
phone.playMusic()
phone.takePhoto()
phone.takePhoto()
phone.takeCall()
复制代码
音乐播放中...
拍照中...
拍照中...
正在打电话...
复制代码
参考资料文章