创建性模式
单例模式:类只有一个实力,在内存中一直存在,可以访问全局资源。
结构型模式
适配器模式:将一个类的接口变成客户需要的接口,例如UItableview的二次封装
桥接模式:将抽象部分和他的实现部分分离,使他们都可以独立变化
//
// ViewController.swift
// DesignModel
//
// Created by maochengfang on 2020/11/2.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let qianniu = QianniuHua.init()
qianniu.insect = Bee.init()
qianniu.bloom()
let mudan = MudanHua.init()
mudan.insect = Butterfly.init()
mudan.bloom()
}
}
protocol IAbstractInset {
func bloomImp()
}
protocol IAbstractFlower {
var insect: IAbstractInset? {get}
func bloom()
}
class QianniuHua: IAbstractFlower {
var insect: IAbstractInset?
func bloom() {
print("牵牛花开了")
insect?.bloomImp()
}
}
class MudanHua: IAbstractFlower {
var insect: IAbstractInset?
func bloom() {
print("牡丹花开了")
insect?.bloomImp()
}
}
class Butterfly: IAbstractInset {
func bloomImp() {
print("蝴蝶来了")
}
}
class Bee : IAbstractInset {
func bloomImp() {
print("蜜蜂来了")
}
}
牵牛花开了
蜜蜂来了
牡丹花开了
蝴蝶来了
装饰模式:动态将额外的责任附加到一个对象上,category
外观模式:定义一个更加高级别的接口,通过减少复杂度和隐藏子系统之间的依赖性,使子系统更加易于使用
一个功能模块只是对外暴露了几个方法,就可以实现客户需要的方法,但是具体怎么实现就不需要客户去关注了
享元模式:运用共享技术有效支持大量细粒度的对象,例如Cell的重机制
代理模式:为其他对象提供一个代理以控制这个对象的访问 例如UITableViewDelegate等
行为型模式
职责链模式:使多个对象都有机会处理请求,从而避免全球的发送者和接受者之间耦合关系。
例如IOS中的事件响应
命令模式:调用对象,目标--动作;
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该语言来解释语言中的句子
迭代器模式:提供一种顺序访问聚合对象中的元素,而不被暴露潜在表示的方法。
中介者模式:用一个中介对象来封装一系列的对象交互。
备忘录模式:归档。属性列表的序列化,CoreData
观察者模式:发布和订阅模型 KVO 和通知
参考资料: