1:系统设计应该达到的目标
1)可扩展性-Extensibility:新的性能可以很容易地加入到系统中去。
2)灵活性-Flexibility:可以允许代码修改平稳地发生,而不会波及到很多其他的模块,这
就是灵活性
3)可插入性-Pluggability:可以很容易地将一个类抽出去,同时将另外一个有同样接口的类
加进来。
做到这几点关键是恰当地提高软件的可维护性和可复用性。
设计原则包括:
1)“开-闭”原则 OCP
2)里氏代换原则 LSP
3)依赖倒转原则 DIP
4)接口隔离原则 ISP
5)组合/聚合复用原则 CARP
6)迪米特法则 LoD
2:开-闭原则
达到这个目的的关键在于抽象化:在java里,可以给出一个或多个抽象java类或java接口,规定出所有的具体类必须提供的方法的特征(Signature)作为系统设计的抽象层。这个抽象层预见了所有的可能扩展,因此,再任何扩展情况下都不会改变。这就使得系统的抽象层不需要修改,从而满足了“开-闭”原则的第二条:对修改关闭。
同时,由于从抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的,这就满足了开闭原则的第一条。
对可变性的封装原则:
3:为什么使用接口
4:抽象类的使用
针对抽象编程
正确使用继承:包括接口继承和抽象继承
什么时候使用继承:
5:里氏代换原则
6:依赖倒转原则
在面向对象的系统里,两个类之间可以发生三种不同的耦合关系
1)零耦合:即两个类没有耦合关系
2)具体耦合:具体性耦合发生在两个具体的(可实例化的)类之间,经由一个类对另外一个具体类的直接引用造成。
3)抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存有最大的灵活性。
依赖倒转原则要求客户端依赖于抽象耦合。它的表述是:抽象不应当依赖于细节;细节应当依赖于抽象。
另外一种表述是:要针对接口编程,不要针对实现编程。
针对接口编程的意思就是说,应当使用java接口和抽象java类进行变量的类型声明、参量的类型声明、方法的返回类型声明,以及数据类型的转换等。
不要针对实现编程的意思就是说,不应当使用具体java类进行变量的类型声明、参量的类型声明、方法的返回类型声明、以及数据类型的转换等。
要保证做到这一点,一个具体java类应当只实现java接口和抽象java类声明过得方法,而不应当给出多余的方法。
变量被声明时的类型叫做变量的静态类型,或明显类型;而变量所引用的对象的真实类型叫做变量的实际类型。如
List employees = new Vector();
//employees变量的静态类型是List,而它的实际类型是Vector
1)引用对象的抽象类型
在很多情况下,一个java程序需要引用一个对象。这个时候,如果这个对象有一个抽象类型的话,应当使用这个抽象类型作为变量的静态类型。这就是针对接口编程的含义。
只要一个被引用的对象存在抽象类型,就应当在任何引用此对象的地方使用抽象类型,包括参量的类型声明、方法返回类型的声明、属性变量的类型声明等。
怎样做到依赖倒转原则:
以抽象方式耦合是依赖倒转原则的关键。由于一个抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证再任何引用到基类的地方都可以改换成其子类,因此,里氏代换原则是依赖倒转原则的基础。
在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性。在某些情况下,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处便十分有限,这时使用具体耦合反而会更好。
- 大小: 213.7 KB
- 大小: 220.3 KB
- 大小: 200.1 KB
- 大小: 133.4 KB
- 大小: 163.6 KB
分享到:
相关推荐
设计模式是在软件工程领域内广泛应用的一种编程思想,它能够帮助开发者解决常见的设计问题,并提高软件的灵活性、可复用性和可维护性。《Java实用系统开发指南》一书中的作者彭晨阳,通过其深入浅出的讲解方式在国内...
根据提供的文件信息,“algorithm-essentials-java”似乎是一份关于Java编程语言中算法实现的文档。下面将基于文档中提到的各个部分来详细介绍其中涉及的关键知识点。 ### 引言 在计算机科学领域,算法是解决问题...
策略模式是Java设计模式中的一种行为模式,它允许在运行时改变对象的行为。在Java开发过程中,策略模式常被用来封装一系列算法,并使它们可以互相替换,从而使算法的变化独立于使用算法的客户。这种模式的核心在于...
在编程世界中,设计模式是解决常见问题的模板,它们为软件开发提供了可重用的解决方案。本资源主要关注的是“工厂模式”,这是Java开发中一个非常重要的设计模式。工厂模式属于创建型设计模式,它提供了一种创建对象...
Java设计模式-建造者模式详解将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。当我们使用Builder的时候,...
策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,在本文中,系统需要与 A 系统和 B 系统...
需要注意的是,J2EE设计模式解决了J2EE项目中最常见的问题。如果你遇到的问题非常特殊,很可能找不到相应的设计模式来解决。 ##### 4.2 软件开发设计模式 软件开发设计模式又可以进一步分为两类:通用面向对象设计...
Java 架构设计模式 - 状态模式和模板模式 在软件设计中,了解设计模式非常重要,它可以帮助开发者编写更好的代码,使得系统更加灵活、可维护和可扩展。今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式...
简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...
在使用MySQL 8.0 JDBC驱动时,开发者需要注意兼容性问题,确保Java环境、数据库版本和驱动版本之间相互匹配。此外,要遵循最佳实践,如使用预编译的PreparedStatement来防止SQL注入,以及使用连接池来管理数据库连接...
并整理二十三种设计模式的理论部分,综合汇总成这份Java 设计模式(疯狂J*va 联盟版),希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述, 适用性,模*的组成部分,并附带...
通过学习这些模式,开发者能够更加高效地解决常见的编程问题,并且能够与同行更有效地沟通设计方案。接下来,我们将重点介绍几种常用的Java设计模式及其应用场景。 #### 三、观察者模式 观察者模式是一种行为型...
Java设计模式是软件开发中一种被广泛采用的方式,它是一组被反复使用、多数人知晓、分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 根据提供的文件内容,...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。本高清教程深入浅出地讲解了Java中的各种设计模式,对于提升开发者的技术能力和面试表现...
通过学习和实践备忘录模式,开发者可以更好地理解如何在Java中利用设计模式来解决实际问题,提高代码的可维护性和可扩展性。同时,备忘录模式与其他设计模式如工厂模式、观察者模式等结合使用,可以构建出更复杂的...
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...
### 大学生选修选课系统的设计与实现 ...综上所述,大学生选修选课系统的设计与实现是结合现代信息技术与教育管理的重要实践,它不仅解决了传统选课方式中存在的诸多问题,也为学校的教学管理工作带来了新的活力。
Java设计模式是软件开发中的一种最佳实践,它们是经过时间考验、被广泛接受的解决方案,用来解决在构建可维护和可扩展的系统时常见的问题。本篇文档详细介绍了多种设计模式,结合图解和代码示例,使得理解更加直观...
java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...