设计模式:可复用面向对象软件的基础
设计模式简介
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。
学习设计模式的作用
- 没啥用!!!
不学设计模式,照样能写代码,不影响爱拍拍(App)上架! - 能看懂别人的代码
为什么这么做!这么做解决了什么问题!
减少重复、臃肿的代码,更易复用、扩展、易维护 - 规范、解耦
在高一点的层次看代码
为什么设计模式?
如果把修习软件开发当做武功修炼的话,那么可以分为招式
和内功
。
招式:
- StartUML、Xcode等开发工具
- Java、C++、Swift等编程语言
- ...
内功:
- 数据结构与算法
- 软件工程
- 重构
设计模式
招式可以很快学会,但内功的修炼需要更长的时间。
如何轻松学习设计模式?
一、案例
积累案例
结合结构图多思考并归纳总结
遇到合适的问题使用合适的设计模式来解决,多用
二、前置知识点
- 面向对象及其特点
面向过程:数据结构和操作分离
面向对象:数据结构和操作看成一个整体,有类
的概念
特点: 封装、继承、多态、(抽象)
- 封装:静态
属性
和动态属性(方法
)增加访问权限 - 继承:OC单继承
-
多态
:1.继承 2.子类重写父类的方法 3.父类的指针指向子类
- 面向对象设计原则(
高内聚,低耦合
)
-
SOLID原则
- 单一职责原则
- 开放-封闭原则
- 里氏代换原则
- 接口隔离原则
- 依赖倒置原则
-
KISS原则
keep it short and simple.保持代码简短 -
DRY原则
Don't Repeat Yourself.代码别重复
- UML图
能看懂类图、时序图,理解类之间的关系:依赖、关联、泛化(继承)、聚合、组合、实现。
iOS主要使用Objective-C语言,虽然说设计模式是一种编程经验,学习设计模式应该与编程语言无关,但其实是有关系的。如适配器模式,实现类适配器C++支持多继承,OC不支持多继承,所以一方是需是协议。严格来说OC中没有C++虚类或Java抽象类、接口的概念,但抽象类可以替换为协议,或者重写init
等方法来假装实现,接口理解为方法。
反过来说,学习设计模式也能更深入的理解面向对象编程
的思想。
设计模式的类型
- 创建型:单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式
对象的创建问题,封装复杂的创建过程,解耦对象的创建和使用。
- 结构型:代理模式、装饰器模式、适配器模式、外观模式、组合模式、享元模式、桥接模式
主要总结了一些类和对象组合在一起的经典结构
- 行为型:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式
类和对象之间的交互
最后
不是为了学设计模式而学设计模式
记住应用场景,做到手中无剑心中有剑即可!
自己也总结经验,也可以创新模式
不仅限23种设计模式
后续的系列文章也是根据自己的理解
整理出来的,如有不足,请不吝赐教!谢谢!!!
参考
设计模式之美
RUNOOB.COM
C++进阶-UML与设计模式
23 种设计模式详解(全23种)
设计模式系列1--开篇漫谈
iOS 设计模式之单例模式
网友评论