阅读 设计模式 自己的理解

创建性模式

单例模式:类只有一个实力,在内存中一直存在,可以访问全局资源。


结构型模式

适配器模式:将一个类的接口变成客户需要的接口,例如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 和通知

 

参考资料:

https://juejin.im/post/6844903665166204942#heading-14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值