zoukankan      html  css  js  c++  java
  • 设计模式六大原则

    一、单一职责原则

         概述:一个实例对象应该只包含一种单一的职责,完成一项属于自己的任务,并完整地封装在一个类中

             原因:在一个类的实例中,如果它承担的责任过重,那么他复用的机会也就越小,耦合度大大提高,当其中一个职责(方法)发生变化时,其它职责也会跟着变化,修改也就越麻烦。程序读起来也非常费劲

    二、开闭原则

            概述:开放扩展,关闭修改。

            原因:当完成一个项目时,并不是以后就彻底结束了。程序的扩展性在企业项目中非常重要。为了方便将来的维护,当增加一个新的实例后,并不需要修改之前写过

    的源代码,而是在原来的基础上再进一步升级,添加一个新类,继承抽象类或接口就可以解决问题

    三、里氏代换原则

            概述:所有引用父类的地方,都应该透明地使用其子类

            详解:由于在使用父类的地方都可以使用其子类,当给一个类定义时,如果其继承了父类,应尽量使用父类来进行定义,而在程序运行时再确定子类的类型,用子类来替换父类对象。

            原因:此类原则是开闭原则的基础,用父类定义,用子类实现,可以更好解决程序扩展性,当我们需要实现哪个实例时,就调用哪个,不需要再重复定义多个实现类     

    四、依赖倒转原则

            概述:高层模块不应该依赖于低层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。其实就是针对接口编程,而不是针对实现类编程

            详解:在引入抽象层后,将具体类的实例通过依赖注入的方式,注入到其它对象中。具体类的方法在定义时使用抽象类型,在运行时再传入具体类型,由子类覆盖父类对象

    五、接口隔离原则

            概述:客户端不应该依赖于那些它不需要的接口

            原因:每一个接口应承担相应独立的角色,不该干的事不干,该干的都要干,这样就避免了接口所承担的任务过重,分工不明确,导致实现类所接受的任务更加复杂

    六、合成复用原则

            概述:优先使用对象组合,而不是继承达到复用的目的

            详解:代码中经常会大量重复出现,为了避免重复,可以通过继承的方式,也可在创建一个新类。一个新的类的对象可以通过关联关系来使用已有的对象,新对象通过调用已有对象的方法来达到复用的目的。

            原因:继承复用会破坏系统的封装性,因为继承会将父类的实现细节暴露给子类。如果父类发生改变,那么子类的实现也会发生改变。没有足够的灵活性,继承只能在有限的环境中使用。比如物品(铅笔,书本,橡皮都有共性),人类(张三,李四,王五也有共性),动物等等,可以用继承来复用共有的属性方法,共性很强。但是共性不强的某些类,如人要使用物品,那么他们之间则要通过关联关系来实现调用。

           

    世界上最可怕事情是比我们优秀的人比我们还努力
  • 相关阅读:
    给C盘瘦身的秘诀
    电化学词汇大全
    Scrapy学习-(1)
    数学部分分支关系总结,有修改的欢迎留言。
    BindingException: Mapper method 'xxx.dao.StudentDao.insertStudent' attempted to return null from a method with a primitive return type (int).
    insertSale attempted to return null from a method with a primitive return type (int).
    Maven [ERROR] 不再支持源选项 5。请使用 7 或更高版本
    Python中字符串型数组--转换为-->数字型数组
    18、pywintypes.com_error: (-2147221008, '尚未调用 coinitialize。', none, none)
    17、ModuleNotFoundError: No module named 'pywin32_bootstrap'
  • 原文地址:https://www.cnblogs.com/AlexOneBlogs/p/7293499.html
Copyright © 2011-2022 走看看