不错的设计思路

2017-08-08  本文已影响7人  活最好的自己

1.开发中的 AOP 思路

  1. 代理模式
    ① 对于 UITableViewCell 中的跳转点击事件, 而该 cell 不知道它所在的UIViewController 是谁, 就需要向上一级传递这个点击事件, 直到找到当前控制器, 从对应的 UINavigationController 跳转到到一个指定的控制器.
    ② 传递事件的过程可能比较复杂, 设置一个又一个的代理, 于是新的自我管理的模式就应运而生了.
  2. Self-Managed:
    为了让每个 cell 各自处理自己的事情, 可以让每个子控件都拥有同一个公共管理类, 通过这个公共管理类来调用各个层级的控件.
  3. 为了降低耦合, 快速地添加或删除某个功能的代码, 可以使用协议. 如春哥的直播间功能, 直接定义一个遵循某些协议的对象, 就能在直播间的主控制器中的特定方法中, 调用这些对象实现的协议方法, 间接地帮助新功能快速调用主控制器的方法, 很类似 collectionview 的代理方法.

2.消息分发机制

  1. 在一个父视图中, 添加多个子视图, 而且这些子视图都需要被父视图调用执行某些相似的操作, 可以把子视图装进一个数组里, 在父视图里遍历有没有实现对应的方法, 按照实现情况来调用.

3. 分离

RoomRootView.m 中实现所有的子视图的懒加载创建, 在 RoomRootLayout 中实现- (void)createLayout:(PTVRoomRootView*)view;方法来对 RoomRootView.m 中的视图添加到父视图 RoomRootView 中, 并布局.

或在 RoomRootView.m 一级视图中实现所有的二级视图子视图的懒加载创建, 在 RoomRootLayout 中实现- (void)createLayout:(PTVRoomRootView*)view;方法来对 RoomRootView.m 中的视图添加到父视图 RoomRootView 中, 并布局, 同时实现- (void)makePortraitLiveVideoLayout:(PTVRoomPortraitView*)view;方法, 来添加PTVRoomPortraitView的子视图及其布局.

4. 复用

在创建新页面的时候, 最好考虑复用的情况, 即配置了 schema 跳转的情况, 通过几个参数, 就能正常展示.

上一篇下一篇

猜你喜欢

热点阅读