`
student_lp
  • 浏览: 428896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
     多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。 一、多例模式的特点      所谓的多例模式,实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有以下特点:①多例类可有多个实例;②多例类必须自己创建、管理自己的实例,并向外界提供自己的实例; 二、多例模式实例 1、有上限的多例类      一个实例数目有上限的多例类已经把实例的上线当做逻辑的一部分,并创造到了多例类的内部,这种多例模式叫做有上限多例模式。比如每一麻将牌局都需要有两个骰子,因此骰子就应当是双态类。以此为例,多例模式代码如下:       由 ...
     单例模式确保某一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例。这个类成为单例类。单例模式有三个要点:①某个类只能有一个实例;②它必须自行创建这个实例;③它必须自行向整个系统提供这个实例。 一、在什么情况下使用单例模式      使用单例模式有一个必要的条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如果一个类可以有几个实例共存,那么就没有表要使用单例类。      一些资源管理器常常设计成单例模式。在计算机系统中,需要管理的资源包括软件外部资源,例如每台计算机可以有若干个打印机,但只能有一个Printer spooler,以避免两个打印作业 ...
一、什么是工厂模式       工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将那个类实例化,不必事先知道每次要实例化那个类。工厂模式有一下几种形态:      ①简单工厂模式:又称为静态工厂 ...
     迪米特法则又叫最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解。      下面看看迪米特法则的其他表述方法:①只与你直接的朋友通信;②不要与陌生人说话;③每一个软件单位对其他的单位都只有 ...
     合成/聚合复用原则经常又叫做合成复用原则。合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。简短的表述是:要尽量使用合成/聚合,尽量不适用集成。 一、合成和聚合的区别      合成和聚合均是关联关系的特殊种类。聚合用来表示“拥有”关系或者整体与部分的关系;而合成则用来表示一种强的多的“拥有”关系。在一个合成关系里,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有对其组成部分的支配权,包括他们的创建和湮灭等。使用程序语言的术语讲,组合而成的新对象对组成部分的内存分配、内存释放有绝对的责 ...
     接口隔离原则讲的是:使用多个专门的接口比使用单一的总接口要好。换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一、什么是接口隔离原则    人们常说的“接口”往往有两种含义,一种是狭义上的,指的是Java语言中的有严格定义的interface结构;另一种则是广义上的,指的是一个类型所具有的方法特征的集合,但这仅是一种逻辑上的抽象。对于这两种不同的用词,接口隔离原则的表达方式以及含义都有所不同。      ①将“接口”理解为一个类所提供的所有方法的特征集合,也就是一种在逻辑上才存在的概念。这样的话,接口的划分就直接带来类型的划分。一种接口 ...
     实现“开-闭”原则的关键是抽象化,并且从抽象化导出具体化实现。如果说“开-闭”原则是面向对象设计的目标的话,依赖倒转原则就是这个面向对象设计的主要机制。依赖倒转原则讲的是:要依赖于抽象类,不要依赖 ...
     从“开-闭”原则中可以看出面向对象涉及的重要原则是创建抽象化,并且从抽象化导出具体化。具体化可以给出不同的版本,每一个版本都给出不同的实现。从抽象化到具体化的导出要使用继承关系和这里要引入的里氏代换原则。 一、什么是里氏代换原则      里氏代换原则描述如下:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是一个基础类的话,那么一定适用于其子类,而且他根本不能觉察出基类对象和子类对象的区别。     假设有两个类,一个是b ...
      在java中有两种类:一种是具体类,另一种是抽象类。具体类可以实例化,抽象类不可以实例化。 一、什么是抽象类       抽象类仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造函数。抽象类 ...
   如果可以动态的将一个构件移走,并以另一个构件取代之,那么这种构件就是可插入构件。接口是实现构件的可插入性的关键。 一、什么是接口        一个java接口是一些方法特征的集合,这些方法特征当然来自于具体 ...
      经典力学的基石是牛顿三大定律。而面向对象的可复用设计(OOD)的第一块基石,便是“开--闭”原则(Open-Closed principle,缩写为OCP)。 一、什么是“开闭”原则?       “开--闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。英文的原文是:Software entities should be open for extension,but closed for modification。       这个原则说的是,在设计一个模块的时候,应当使这个模块可以在不修改的前提下被扩展。换言之,应当可以在不必修改源代码的情况下修改这个模块的行为。 ...
     Annotation是java中重要的特性,该技术在spring、Habinate等框架中大量使用。通过java自带的三种注释,来窥探注释的应用和原理,这样在后面使用这些框架的时候,可以迅速上手。      注释是什么?注释为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻非常方便的使用这些数据。      为什么要用注释?注释实现了对元数据的支持,能够使开发人员在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息,并且这些信息可以通过编译器检查格式的正确性。通过使用注释,我们可以将这些元数据保存在java源代码中,并利用annotation API为自己的 ...
       在上一篇详细讲解了反射的实现基础,这主要是反射在java 编程中应用非常广泛。例如我们熟知的struts、spring等框架,以及我们后续还要讲到的IoC(控制反转)、AOP(面向切面变成)等理论,这些都是建立在java反射的基础之上的,所以反射非常重要。     除了上面提到的这些框架,其实我们自己在编写程序的过程中,也经常会用到反射技术。通过反射,可以解决很多问题,也使得我们的代码更加优雅。下面的章节,就为大家介绍两个应用,分别是:动态代理和工厂设计模式。不过在讲动态代理之前,我们还是有必要先复习一下java类的生命周期。 一、java类的生命周期       在一个 ...
      运行时类型识别(Run-time Type Identification,RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的“反射”机制。      要理解RTTI在java中的工作原理,首先必须知道类型信息 ...
     JDK1.5中最显著变化之一就是添加对泛型类型的支持。所谓的泛型就是指在对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定类型。 一、为什么要用泛型      一般的类和方法,只能使用具体的 ...
Global site tag (gtag.js) - Google Analytics