美文网首页互联网产品经理
iOS开发——六大设计原则

iOS开发——六大设计原则

作者: CyberDunk1997 | 来源:发表于2020-11-18 17:37 被阅读0次

    一、单一职责原则(Single Responsibility Principle)

    一个类只做一件事

    • CALayer:动画和视图的显示。
    • UIView: 只负责事件传递、事件响应。
    未实现单一职能原则
    实现了单一职能原则

    二、开放封闭原则(Open Close Principle)

    • 对修改关闭(不修改父类),对扩展开放(通过继承实现扩展)
    • 新增功能用extension,category
    未实现开闭原则
    未实现开闭原则
    实现了开闭原则
    实现了开闭原则

    三、里氏替换原则(Liskov Substitution Principle)

    所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。

    四、依赖倒置原则(Dependence Inversion Principle)

    • 依赖抽象,而不是依赖实现。
    • 抽象不应该依赖细节;细节应该依赖抽象。
    • 高层模块不能依赖低层模块,二者都应该依赖抽象。

    五、 接口隔离原则(InterfaceSegregation Principles)

    使用多个专门的协议,而不是一个庞大臃肿的协议

    • UITableViewDelegate:含有的方法是UITableView的实例告知其代理一些点击事件的方法,即事件的传递,方向是从UITableView的实例到其代理。
    • UITableViewDataSource:含有的方法是UITableView的代理传给UITableView一些必要数据供UITableView展示出来,即数据的传递,方向是从UITableView的代理到UITableView。

    六、 迪米特原则(Law of Demeter)也称最少知识原则

    • 迪米特法则也叫做最少知道原则(Least Know Principle), 一个类应该只和它的成员变量,方法的输入,返回参数中的类作交流,而不应该引入其他的类(间接交流)。
    不好的设计
    好的设计

    两种设计不同之处在于,在客户端里面,没有引入GasEngine类,而是直接通过Car实例获取到了需要的数据。
    这样设计的好处是,如果这辆车的引擎换成了电动引擎(原来的GasEngine类换成了ElectricEngine类),客户端代码可以不做任何修改!因为它没有引入任何引擎类,而是直接获取了引擎的品牌名称。
    所以在这种情况下我们只需要修改Car类的usingEngineBrandName方法实现,将新引擎的品牌名称返回即可。

    作者:zyl409214686
    链接:https://juejin.im/post/6844903545561432077

    作者:J_Knight_
    链接:https://juejin.im/post/6844903673672237063

    相关文章

      网友评论

        本文标题:iOS开发——六大设计原则

        本文链接:https://www.haomeiwen.com/subject/lhwciktx.html