项目总结(一)--- 关于用到的设计模式

  历时几个月,终于在不断的修改完善中完成了公司项目。一直没时间写下项目中的经验收获。正好趁这段时间,记录下自己在项目中学习的经验,与大家分享(大牛绕过。。)。话不多说,开始。

  模式一:MVC模式-- MVP、MVVM模式

    MVC(Model-View-Controller)
    MVP(Model-View-Presenter)
    MVVM(Model-View-ViewModel)

    我觉得以上三者都可以归为MV-X,目的都是分离Model和View,提高重用性,降低耦合性。而X的作用算是二者之间的桥梁,来沟通Model层和View层。(其实是我了解不深才这样说的^_^)所以,MVC模式到后期会造成控制器代码量巨大(同时包含业务逻辑和页面逻辑),提高维护成本。为了解决这个问题,MVVM模式则选择将控制器中的业务逻辑进行抽离转移。使得控制器页面逻辑更为清晰,易维护。而将一些繁琐的逻辑抽离封装后,对于做单元测试也非常有益。至于其他优缺点,可以去看一些大牛写的文章,都蛮详细的。

  模式二:单例模式

    至于什么是单例模式,在这就不赘述,一搜一大把。只是在使用时注意情景,我在开发APP的过程中,有两处用到了单例,一个是音频播放器工具类(可播放列表,上一首下一首,暂停/继续等操作),另一个就是项目中用到的一些数据依赖较强的,和会经常改变的属性(例如在我们的项目中,因为与数据与地区ID有关,很多地方的数据都依赖于这个地区ID,则可以把这个属性放大公共的单例类共外界引用。有一点小技巧就是,为了保证地区ID改变时,外界的数据跟着改变,我采用的是重写该属性的set方法,在set方法中去发送通知,供外界监听处理)

  模式三:代理模式

    代理模式,是iOS开发中使用较多的模式,与协议结合使用。最明显的优点就是可以降低项目的耦合性。具有较高的灵活性,无论是传递数据,还是告知事件。而对于简单的数据传递,个人比较偏好使用block。简单快捷,代码集中。当然,看需求而定。但使用block的过程中,注意诸如循环引用的常见问题。

  模式四:观察者模式

    没啥说的,KVO和Notice。使用时注意通知的注册和移除,防止野指针错误。    

  模式五:备忘录模式

    恩,听起来可能有点陌生,其实就是将一个值持久化存储在本地(用户偏好,归档等等)。然后无论是取值还是修改值,都直接作用在持久化的数据上。主要用于需要保存一个时刻某个对象的状态。

  模式六:懒汉模式

    与饿汉模式相对应,不能说哪个模式好或不好,只能视不同的情况而定。而在我开发的项目中,懒汉模式用的比较多,主要防止过早的去占用内存资源。

  等等,还有其他的一些设计模式。在此都不细说了。以上算是项目中比较主要的一些吧。代码是一种艺术,设计模式则是艺术的体现。一个好的设计模式,无疑可以大大的提高我们的开发效率和项目的可维护性,扩展性等等。但是也需要根据具体情况而定。不要为了用设计模式而使用设计模式,归根结底,都是为了解决切实的问题的。

原文地址:https://www.cnblogs.com/dashunzi/p/4249903.html