zoukankan      html  css  js  c++  java
  • 设计模式(一)

    很久以前看设计模式的时候,也没有看的太透彻,一直到现在,还是云里雾里,而且杂七杂八的知识早就忘得差不多了。

    最近买了一本最经典的最基础的设计模式的书--《大话设计模式》,就此趁这机会在重学一遍,好好理一理思路。

    六大原则

     

    1、单一职责原则

    字面理解,是要保持功能的单一,每个类或方法要尽量把实现的功能拆分出来,这样能保证低耦合,还能减少代码的重复量。

    比如,从学生表中获取成绩大于90的学生,修改等级为A,如果放在一个方法里实现,那获取成绩大于90分的学生的功能就要重新写一个方法。

    最好的办法是,将查询和修改写成两个方法,避免重用。这在mvc三层设计里就是经常使用的。

    2、里氏替换原则

    任何基类可以出现的地方,子类一定可以出现。

    -->里氏替换原则规范(请参照:http://blog.csdn.net/hfreeman2008/article/details/52344343

    -->1)子类必须完全实现父类的方法

    -->2)子类可以有自己独有的方法和属性

    -->3)覆盖或实现父类的方法时输入参数可以被放大

    -->4)覆盖或实现父类的方法时输出结果可以被缩小

    3、依赖倒转原则

    抽象不应该依赖细节,细节应该依赖于抽象。高层模块不应该依赖于低层模块,两者都应该依赖于抽象。

    如果是高层依赖于低层,在低层模块需要更改时也需要更改高层模块,会导致模块的复用性降低而且大大提高了开发的成本。所以用依赖倒转,即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。

    4、接口隔离原则

    客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

    一般规则:

    • 一个接口只服务于一个子模块或业务逻辑
    • 接口尽量简洁
    • 接口尽量不要更改

    比如在简书上看到的一个例子:一个动物接口,一只狗,一只鸡,如果接口里定义了飞的方法,狗对象并不能使用。所以要再定义一个接口,将飞的方法放进去,由鸡来实现。

    5、迪米特法则

    一个软件实体应当尽可能少的与其他实体发生相互作用。就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。

    1)优先考虑将一个类设置成不变类。
    2)尽量降低一个类的访问权限。
    3)谨慎使用Serializable。
    4)尽量降低成员的访问权限。

    6、开闭原则

    软件实体,包括类、函数、模块等,可以扩展,但不能修改。简单来说就是可以添加,不能改动。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即修改原有的代码对外部的使用是透明的。

  • 相关阅读:
    vue-router的钩子函数
    vue中父组件和子组件的生命周期钩子
    图片的按需加载代码实现
    关于DNS优化的策略
    在url中输入地址到页面呈现发生了什么
    vue-router的组件传值
    微信小程序wx_request封装
    vue生命周期
    vue生命周期的讨论&容易忽略的知识
    【Vue】---{__ob__: Observer}
  • 原文地址:https://www.cnblogs.com/miys/p/8392033.html
Copyright © 2011-2022 走看看