依赖注入是一种让代码低耦合的设计模式。
有四种实现方式:
- 初始化注入
- 属性赋值注入
- 接口注入
- 容器注入
依赖注入是一种让代码低耦合的设计模式。
有四种实现方式:
我们知道delegate在OC中是比较经常使用的代理模式。主要作用是将某对象的行为属性传递到另一个对象。以及绑定代理都用用weak弱引用。1
2
3
4
5
6
7
8
9
10
11protocol MyClassDelegate: class {
func doFoo()
}
class MyClass {
weak var delegate: MyClassDelegate?
func foo() {
delegate?.doFoo()
}
}
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
在MVC 框架中,其中C(控制器)就是 M(模型)和 V(视图)的中介者。我们接下来用一个搜索视图来展示中介者模式:
1 | ---------- 简单工厂模式:---------- |
消息布局观察:周边头像,昵称,间距 ,气泡 及其他统一,内容视图挖空; 采取自定义注入视图配置;
从CellFor 方法说起;聊天消息页面,我们看到 有 聊天消息 还有时间戳;根据 ModelItem项 的 class类型 分别去创建 两种cell ; 只里只讲 聊天消息cell;
流程:当为聊天消息Model 时候,名 messageModel(messageModel 里面 大致有以下属性: 记录消息模型,消息布局,头像,昵称 显示控制,消息内容size; (不足 后补)); 取得消息布局; 相对应的content类字符串;根据 identify = content 去重用cell (不同消息类型重用标识不同 ); 创建MessageCell 根据 content 去创建 对应的内容视图 即可;再刷新视图数据 赋值;
VC 发起请求, 一个专门发请求的发射器;我给它取名字 叫 NetManager , 显然 ,为 了不重复创建http 请求基础配置(请求头,Https证书配置等),这是个单例;
发射器 发的是请求; 考虑到每个业务 都有不同的请求;我准备了 一个 超级父类请求 ;取名 DataRequest; 具体的请求,只需传 具体的子类request;
一个APP 请求有很多,为了区分 及 维护方便 ,于是我定义了一个枚举;每个业务请求,只需给它表明一个标识;
AFNetworking也被广泛使用。其它的ASIHttpRequest,MKNetworkKit啥的其实也都还不错,苹果对网络请求部分已经做了很好的封装。但不管如何,APP端还是要对网络进行一个封装。在实际的App开发中,Afnetworking已经成为了事实上各大App的标准配置。
iOS开发领域有很多对象间数据的传递方式,我看到的大多数App在网络层所采用的方案主要集中于这三种:Delegate,Notification,Block。我的意见是Delegate为主,Notification可以用在网络发生变化时候使用。