设计模式分类
- 创建型模式->5种: 常用的
- 结构性模式->7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
- 行为型模式->11种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解析器模式
UML类图关系
泛化关系(generalization):继承
实现关系(realization):接口
依赖关系(dependency)
关联关系-单向关联(Directed Association)
关联关系-双向关联(Association)
聚合关系(Aggregation)
组合关系(Composition)
总结设计模式经验思想
架构学习经验->分析陌生框架经验
1.基本概念(了解)
2.确定框架模式
第一大步:分析框架?架构师入门(1-3级)
架构设计学习思路?->学习框架指导思想(方针)
分为三个部分?
第一个部分:分析框架结构
第一步:分析框架本身核心设计模式?
本身框架:多种设计模式融合在一起的设计
核心设计模式
数据库框架->构建者模式
辅助设计模式
例如:命令模式
第二步:确定辅助设计模式?
构建者模式
第三步:分析核心设计模式角色划分?
命令模式角色
复习即可(4个角色)
第四步:分析框架类对应的核心模式角色以及子类角色?
4个角色分别对应框架中那个类
第五步:分析辅助设计模式角色划分?
第六步:分析框架类对应的辅助模式角色以及子类角色?
第二个部分:分析框架具体实现?
第一步:分析核心设计模式角色实现?(筛选)
需要什么模块,你就分析什么模块
第二步:分析辅助设计模式角色实现?(筛选)
第三步部分:分析框架性能优化问题?
第一步:分析核心设计模式角色实现?(筛选)
需要什么模块,你就分析什么模块
第二步:分析辅助设计模式角色实现?(筛选)
第二大步:架构师晋升->修改框架源码,优化框架代码,变为自己的框架(4-6级),并且发不到github上面,今后用于面试,任何框架给到你都能够变成自己的(我也在每天在努力学习精进)
处于这个级别
所有面向对象语言对于你来说都是不成问题的
第三大步:架构师大师->创造框架(7-9级)
5、学习方法?
如何发现呢?
分析设计思路,如何找到答案?
学习了设计模式(首先一上来就是设计模式分析学习)
第一步:分析框架,使用框架,基本API使用你完全熟悉?
第二步:核心类?
Connection
第三步:分析功能?
思考:他的SQL是如何构建?
查看源码你会发现TableBuilder->对应就是构建者模式
万一没有按规范怎么办?
解决方案
1、分析该功能场景是什么?
每一种设计模式都有他的对应的场景
2、采用设计模式进行对比?
一个个去套或者尝试
类结构划分
直到到准了为止,可能会有误差,但是没关系,如果你的设计模式掌握的好,那么一套就准。
SDWebImage教你如何来套?
方法学习了之后马上用,用错了没关系,总结经验即可。
内容二:框架设计实现?
1、再来一个方法:一般优秀框架都会有一些注视(有助于分析框架设计)
反问自己:这个数据库目的为了什么?
目的为了构建SQL语句
反问自己:如何构建呢?数据库表字段,对象属性是如何对应的呢?
当我去翻阅代码时候->察觉到->Binding
`Binding` is a protocol that SQLite.swift uses internally to
directly map SQLite types to Swift types.
含义:将SQLite数据库里面表字段映射到Swift中的对象属性
简单:说白了就是将数据库表字段和属性动态绑定
将name = "NSLog",t_name
name->映射->t_name
中间映射过程有框架动态完成(动态绑定)
反问自己:绑定有方向?
数据库->映射->Swift属性:Binding
Swift属性->映射->数据库:Value->Expressible
extensions cannot have inheritance clauses
插入数据->String->映射类型->TEXT
成立了