开发模式

2018-06-06  本文已影响0人  hellorob
设计模式

创建型模式

结构型模式

行为型模式

面向对象设计七大原则
  1. 单一职责原则(Single Responsibility Principle)

每一个类应该专注于做一件事情。

  1. 里氏替换原则(Liskov Substitution Principle)

超类存在的地方,子类是可以替换的。

  1. 依赖倒置原则(Dependence Inversion Principle)

实现尽量依赖抽象,不依赖具体实现。

  1. 接口隔离原则(Interface Segregation Principle)

应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。

  1. 迪米特法则(Law Of Demeter)

又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用。

  1. 开闭原则(Open Close Principle)

面向扩展开放,面向修改关闭。

  1. 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)

尽量使用合成/聚合达到复用,尽量少用继承。原则: 一个类中有另一个类的对象。

尾递归:

如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。

精髓就是通过参数传递结果,达到不压栈的目的。当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。

参考:递归和尾递归的区别和原理

facttail(int n, int res)
{
    if (n < 0)
        return 0;
    else if (n == 0)
        return 1;
    else if (n == 1)
        return res;
    else
        return facttail(n - 1, n * res);
}

MVC与MVVM

然而由于一般View和Controller都是成对出现,View和Controller总是表现得像是同一层,一般实际的模式是M-VC

MVC的问题

1. 厚重的View Controller

2. 无处安放的网络逻辑

3. 较差的可测试性

MVVM

在MVVM 中,view 和 view controller正式联系在一起,我们把它们视为一个组件
view 和 view controller 都不能直接引用model,而是引用视图模型(viewModel)
viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方
使用MVVM会轻微的增加代码量,但总体上减少了代码的复杂性

view 引用viewModel ,但反过来不行(即不要在viewModel中引入#import UIKit.h,任何视图本身的引用都不应该放在viewModel中)
viewModel 引用model,但反过来不行

image.png

MVVM 的使用建议

MVVM 的优势

MVVM 的弊端

iOS 关于MVC和MVVM设计模式的那些事


函数式编程

函数式编程是一种将程序看成是数学方法的求值、不会改变状态、不会产生副作用的编程方式。

响应式编程

响应式编程是一种通过异步和数据流来构建事物关系的编程模型。

上一篇下一篇

猜你喜欢

热点阅读