`
zhangqijava
  • 浏览: 3929 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
  • green12win73: 一直想找一个浅显易懂的java回调例子和说明,看了这篇文章之 ...
    java 回调

java 面向对象设计原则

阅读更多
一、单一职责原则:
全称:“Single-Responsibility Principle”
说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化。
使用SRP注意点:
1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责;
2、在没有变化征兆的情况下应用SRP或其他原则是不明智的;
3、在需求实际发生变化时就应该应用SRP等原则来重构代码;
4、使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码;
5、如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构;SRP优点:消除耦合,减小因需求变化引起代码僵化。
二、里氏代换原则
全称:“Liskov Substitution Principle”
说明:子类型必须能够替换它们的基类型。一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。
优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。
三、依赖倒置原则
全称:“Dependence Inversion Principle”
说明:要依赖于抽象,不要依赖于具体。客户端依赖于抽象耦合。
抽象不应当依赖于细节;细节应当依赖于抽象;
要针对接口编程,不针对实现编程。
优点:使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
怎样做到依赖倒置?
以抽象方式耦合是依赖倒转原则的关键。抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证在任何引用到基类的地方都可以改换成其子类,因此,里氏代换原则是依赖倒转原则的基础。
在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处便十分有限,这时可以用具体耦合反而会更好。
层次化:所有结构良好的面向对象构架都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供一组内聚的服务。
依赖于抽象:建议不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:
1、任何变量都不应该持有一个指向具体类的指针或者引用。
2、任何类都不应该从具体类派生。
3、任何方法都不应该覆写它的任何基类中的已经实现的方法。
四、接口隔离原则
全称:“Interface Segregation Principle”
说明:使用多个专一功能的接口比使用一个的总接口总要好。从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。过于臃肿的接口是对接口的污染,不应该强迫客户依赖于它们不用的方法。
优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。
如何实现接口隔离原则
不应该强迫用户依赖于他们不用的方法。
1、利用委托分离接口。
2、利用多继承分离接口。
五、迪米特原则
全称:“Law of Demeter”
说明:对象与对象之间应该使用尽可能少的方法来关联,避免千丝万缕的关系。
如何实现迪米特法则?
迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:
1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。
2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
3) 在类的设计上,只要有可能,一个类应当设计成不变类。
4) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。
六、开放-封闭原则
全称:“Open-Closed Principle”
说明:对扩展开放,对修改关闭。
优点:按照OCP原则设计出来的系统,降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能。增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试。
如何实现“开-闭”原则?
在面向对象设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。换言之,定义一个一劳永逸的抽象设计层,允许尽可能多的行为在实现层被实现。
解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。
对一个事物抽象化,实质上是在概括归纳总结它的本质。抽象让我们抓住最最重要的东西,从更高一层去思考。这降低了思考的复杂度,我们不用同时考虑那么多的东西。换言之,我们封装了事物的本质,看不到任何细节。
在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。
对实体进行扩展时,不必改动软件的源代码或者二进制代码。关键在于抽象。
分享到:
评论

相关推荐

    Java面向对象设计原则

    Java面向对象设计原则 Java面向对象设计原则是 Java 编程中的基础概念,它们是指在 Java 编程中遵循的一些基本原则,以确保编写的代码是可维护、可扩展、灵活的。这些原则包括开闭原则、里氏替换原则、单一职责原则...

    Java面向对象设计原则.docx

    "Java面向对象设计原则" Java面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心。下面我们将详细介绍七大设计原则。 原则1: DRY(Don't repeat yourself) DRY...

    java面向对象设计原则(带书签高清晰pdf)

    ### Java面向对象设计原则 #### 一、面向对象设计原则概览 面向对象设计原则是在软件开发过程中确保代码质量、可维护性和可扩展性的指导方针。遵循这些原则可以帮助开发者写出更加健壮、灵活且易于理解的代码。...

    java面向对象设计的六大原则

    ### Java面向对象设计的六大原则 在Java编程中,面向对象设计的原则对于构建高质量、可维护、可扩展的软件系统至关重要。以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, ...

    Java面向对象的设计原则

    总的来说,Java面向对象设计原则中的“优先使用对象组合而非类继承”鼓励我们避免过度使用继承,而是通过组合来构建灵活、解耦的系统。在实际开发中,我们需要根据具体场景和需求,明智地选择和应用这两种机制,以...

    java面向对象的设计

    面向对象设计是软件开发中的核心思想,它强调以对象为中心,通过封装、继承和多态等特性来构建可维护和可扩展的系统。在Java这样的面向对象语言中,...在Java开发过程中,理解和应用这些面向对象设计原则是非常重要的。

    Java面向对象程序设计课后答案全解

    Java面向对象程序设计是计算机科学中的一个重要领域,它基于面向对象编程(OOP)原则,为开发者提供了构建复杂软件系统的方法。本资源包含了该课程所有章节的课后习题答案,帮助学习者深入理解Java语言的面向对象...

    61条Java面向对象设计的经验原则

    面向对象设计是软件开发中的核心思想,...以上是根据61条Java面向对象设计原则的详细解读,这些原则帮助开发者编写更高效、易于理解和维护的代码。在实际编程中,灵活运用这些原则能够提高代码质量,减少后期维护成本。

    java面向对象程序设计第4章源代码

    在Java编程语言中,面向对象程序设计(Object-Oriented Programming, OOP)是一种核心的编程范式,它基于“对象”概念,将数据和处理数据的方法封装在一起。本章节的源代码着重于讲解和实践Java中的面向对象特性,...

    Java面向对象设计.pdf

    根据提供的文件信息,我们可以看出文档《Java面向对象设计.pdf》主要围绕Java语言中的面向对象设计原则进行介绍。从给出的部分内容中,我们可以提炼出以下知识点: 1. **Java基础语法**:文中包含了Java的基本...

    Java面向对象设计的一些初级实例

    以上只是Java面向对象设计的一些基础概念,实际的项目开发中,还需要考虑更多的设计原则,如单一职责原则、开闭原则、依赖倒置原则等,以及设计模式的应用,如工厂模式、单例模式、观察者模式等。在实践中不断学习和...

    java 门禁系统的面向对象设计

    在IT行业中,面向对象设计(Object-Oriented Design,简称OOD)是一种常用的设计方法论,尤其在Java这样的面向对象编程语言中尤为重要。本篇将详细探讨如何使用Java进行门禁系统的面向对象设计。 门禁系统是用于...

    面向对象设计原则(Java).ppt

    面向对象设计原则,开闭原则,迪米特法则,里氏代换,接口隔离

    Java面向对象程序设计教程.pdf

    学习Java面向对象编程不仅仅是掌握语法,更重要的是理解其设计理念和原则,如SOLID原则(单一职责、开闭、里氏替换、接口隔离、依赖倒置),以及设计模式的应用,如工厂模式、单例模式、观察者模式等。这些都将在...

    Java面向对象应用程序开发

    Java面向对象应用程序开发是软件开发领域中的核心主题,尤其对于初学者和专业开发者而言,理解并掌握这一技术至关重要。Java语言以其强大的面向对象特性、跨平台兼容性以及丰富的类库,成为了开发各种类型应用程序的...

    Java面向对象程序设计.pptx

    该书的特点是采用“从对象开始”的方式引导读者,从基础知识开始,逐步深入到高级主题,包括面向对象设计(OOD)、UML类图、编程揭示、调试提示与设计提示等。同时,本书还提供了205道自测题及答案、381道难度不一的...

    《面向对象程序设计JAVA语言程序设计》

    《面向对象程序设计JAVA语言程序设计》涵盖了 Java 语言的基础知识点、设计原则、编程风格、多线程和并发、网络和 Web 编程、异常处理、安全和可靠性、Applet 和应用程序、设计模式、测试和调试等多方面的内容。

    Java面向对象程序设计-电子教案

    Java面向对象程序设计是计算机科学中的一个重要概念,尤其在软件开发领域中占据核心地位。本电子教案主要针对初学者,旨在提供一个简单易懂、实用的学习路径,帮助他们掌握Java编程语言的基础和面向对象的核心思想。...

    Java面向对象设计

    标题:“Java面向对象设计” 描述:“找了很长时间的东东,拿到这里分享一下,大家可以先看看哦”。这句话虽然简短,但透露出分享者对“Java面向对象设计”这一主题的重视与热忱,以及希望通过分享促进大家共同学习...

    Java_面向对象设计原则总结

    Java_面向对象设计原则总结 一 类的设计原则 1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle...

Global site tag (gtag.js) - Google Analytics