六大设计原则

设计模式

  • 责任链 (事件响应机制)

一个类持有一个当前类类型的成员变量(像链表)。

  • 桥接模式

通过抽象父类来实现,子类实现功能,在实用类里决定具体用哪个子类。

  • 适配器模式

类适配器
对象适配器
适配对象以成员变量的方式集成被适配对象。

  • 单例模式
    oc单例:
@implementation Danli
+(id)sharedInstance{
    static Danli *instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken,^{
      instance = [supper allocWithZone:NULL]init];
    })
    return instance;
}
+(id)allocWithZone:(struct _NSZone *)zone{
  return [self shareInstance];
}
-(id)copyWithZone:(nullable NSZone *)zone{
  return self;
}

swift单例:

class Danli{
  // “懒实例化”的全局变量会被自动放在dispatch_once块中
  static let shared = Danli();
}
  • 命令模式

对行为进行参数化的设计模式。例如微博在很多页面都有转发评论赞等相关行为逻辑,这就需要对这些行为逻辑进行封装。
可以降低代码重合度

六大设计原则

  • 单一指责原则

一个类只负责一件事 例:UIView和CALayer

  • 依赖倒置原则

抽象不应该依赖于具体实现,具体实现可以依赖抽象。

  • 开闭原则

对修改关闭,对扩展开放

  • 里氏替换原则

父类可以被子类无缝替换,且原有功能不受任何影响。kvo就是典型的子类默默替换了父类

  • 接口隔离原则

使用多个专门的协议、而不是一个庞大的协议 例:UITableviewDelegate UITableviewDatasourse

  • 迪米特法则

一个对象应当对其他对象有尽量少的了解。
高内聚、低耦合

创建型模式

1、简单工厂模式
2、工厂模式
3、抽象工厂模式
4、建造者模式
5、单例模式

结构模式

6、适配器模式
7、桥接模式
8、装饰器模式(iOS 类别)
9、外观模式
10、享元模式(iOS tableviewcell复用机制)
11、代理模式

行为模式

12、命令模式
13 、中介者模式
14、观察者模式
15、状态模式

对外暴露只是改变状态,类似于重写set方法

16、策略模式

本质:分离算法,选择实现
把参数和实现 同时传递给函数
var add = function(a,b){
      return a+b;
}
func(1,2,add);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。