iOS 设计模式及对应的面向对象原则

原文地址

(一)代理

场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。
❗️优势:解耦合
敏捷原则:开放-封闭原则

(二)观察者

场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息。
❗️优势:解耦合
敏捷原则:接口隔离原则,开放-封闭原则

(三)单例

场景:确保程序运行期某个类,只有一份实例,用于进行资源共享控制。
❗️优势:使用简单,延时求值,易于跨模块
敏捷原则:单一职责原则

(四)策略

场景:定义算法族,封装起来,使他们之间可以相互替换。
❗️优势:使算法的变化独立于使用算法的用户
敏捷原则:接口隔离原则;多用组合,少用继承;针对接口编程,而非实现。

(五)工厂

场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。
“专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。”

通过简单工厂模式的重构,我们就是闲了低耦合度的代码结构,做到了对外扩展开放,对修改关闭。如果再增加任何的 操作方法,只需要继承操作方法父类,新建一个操作子类,并且在简单工厂类里面多添加一个else if的判断即可。

优点:简单工厂模式的优点是客户端可以直接消费产品,而不必关心具体产品的实现,消除了客户端直接创建产品对象的责任,实现了对责任的分割。

缺点:是工厂类几种了所有产品的创建逻辑,一旦不能正常工作,整个系统都会受到影响,而且当产品类多结构复杂的时候,把所有创建工作放进一个工厂中来,回事后期程序的扩展较为困难。

通过优缺点的分析,我们可以再如下场景中使用简单工厂模式:

(1)工厂类负责创建的对象较少时;

(2)客户端只知道传入工厂类的参数,对于如何创建对象的逻辑不必关心时。

敏捷原则:DIP依赖倒置原则

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...
    Steven1997阅读 4,951评论 1 12
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,378评论 3 14
  • 最近发现默默喜欢说好无聊啊,在她等待的时候她会说等待好无聊啊,还会说在家好无聊,幼儿园不无聊,今天还说妈妈我想再上...
    大脸猫黑黑阅读 1,270评论 0 0
  • 拍摄主题:高中女生 拍摄设备:iPhone6 拍摄时间:中午 拍摄地点:河南省 许昌市 鄢陵县 后期修图:snap...
    润苼阅读 2,394评论 0 2
  • 前几天我在清华大学上积极心理学的课程。每天早上6点多就起床,然后挤地铁,一路站到五道口地铁站。 其实我不用起那么早...
    躺平专家阅读 3,558评论 10 11

友情链接更多精彩内容