目录
1.单例模式
1.单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点。在 Swift 中,可以使用静态变量和私有构造函数来实现单例模式。
class Singleton {
static let shared = Singleton() // 静态变量,存储唯一实例
private init() {} // 私有构造函数,防止外部创建新实例
func doSomething() {
print("Singleton is doing something")
}
}
// 使用方式
Singleton.shared.doSomething()
2.观察者模式
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得一个对象的状态发生变化时,其相关对象会自动得到通知并更新。在 Swift 中,可以使用 NotificationCenter
来实现观察者模式。
// 定义一个主题类
class Subject {
let name: String
var observers: [Observer] = []
init(name: String) {
self.name = name
}
func addObserver(_ observer: Observer) {
observers.append(observer)
}
func notifyObservers() {
for observer in observers {
observer.update()
}
}
}
// 定义观察者接口
protocol Observer {
func update()
}
// 实现观察者类
class ConcreteObserver: Observer {
let name: String
init(name: String) {
self.name = name
}
func update() {
print("\(name) has been notified")
}
}
// 使用方式
let subject = Subject(name: "Subject")
let observer1 = ConcreteObserver(name: "Observer 1")
let observer2 = ConcreteObserver(name: "Observer 2")
subject.addObserver(observer1)
subject.addObserver(observer2)
subject.notifyObservers()
3.代理模式
代理模式是一种结构型设计模式,它通过创建一个代理对象来控制对另一个对象的访问。代理对象充当原始对象的接口,在需要时将请求传递给原始对象。在 Swift 中,可以使用协议将代理模式实现为一个接口。
// 定义接口
protocol Subject {
func request()
}
// 实现原始对象
class ConcreteSubject: Subject {
func request() {
print("ConcreteSubject is handling request")
}
}
// 实现代理对象
class Proxy: Subject {
let subject: ConcreteSubject
init() {
subject = ConcreteSubject()
}
func request() {
subject.request()
}
}
// 使用方式
let proxy = Proxy()
proxy.request()