设计模式-缺省适配类.

在有些时候,如果我们不准备实现一个接口的全部方法时,因为我们这个类不需要用到接口中所规定的其他方法,我们按照如上的方式实现一些要用到的方法,没用的方法空实现。

很明显这是一种浪费,甚至是一种混乱。除非看过空方法的代码,否则不知道其不是空的,即使知道一些方法是空的,但不确定哪些方法是空的,哪些不是空的。这个时候我们可以考虑使用一个中间类来解决这个问题,这个中间类空实现接口的所有方法,同时,我们将这个中间类定义为抽象的,使其不可能被实例化,实例化中间过渡类没有任何实际的意义。 然后让具体的类继承这个中间类只让他覆盖自己所需的方法即可。

我们将这个中间过渡类称为 “缺省适配类”,这个模式也叫做缺省适配模式(Default Adapter)。

  1. interface Study
  2. {
  3. public void StudyGrade1();
  4. public void StudyGrade2();
  5. public void StudyGrade3();
  6. public void StudyGrade4();
  7. public void ThesisPresentation();
  8. }

上个例子,我们增加一个缺省适配抽象类StudyAdapter

public abstract class StudyAdapter implements study
{
 public void StudyGrade1(){}
 public void StudyGrade2(){}
 public void StudyGrade3(){}
 public void StudyGrade4(){}
 public void ThesisPresentation(){};
}

下面我们来看不同的具体类怎么使用这个缺省适配类.
普通的全日制大学生 GeneralStudent:

public class GeneralStudent extends StudyApater {  public GeneralStudent(){}

public void StudyGrade1(){     System.out.println("读大学一年级");  }

public void StudyGrade2(){     System.out.println("读大学二年级");  }

public void StudyGrade3(){     System.out.println("读大学三年级");  }

public void StudyGrade4(){     System.out.println("读大学四年级");

public void ThesisPresentation(){

System.out.println("修满了学分,参加论文答辩");    } }

提前修满学分特殊的大学生SpecialStudent:

public class SpecialStudent extends StudyApater {  public SpecialStudent(){}

public void StudyGrade1(){     System.out.println("读大学一年级");  }

public void StudyGrade2(){     System.out.println("读大学二年级");  }

public void StudyGrade3(){     System.out.println("读大学三年级");  }

public void ThesisPresentation(){

System.out.println("修满了学分,参加论文答辩");    } }

读到大二就退学的大学生DiscontinueStudyStudent:

public class DiscontinueStudyStudent extends StudyAdapter {  public DiscontinueStudyStudent(){}

public void StudyGrade1(){     System.out.println("读大学一年级");  }

public void StudyGrade2(){     System.out.println("读大学二年级");  }

}

如此一来,方便很多。程序逻辑更清晰明了了。

在java API中 就有很多类似的例子。比如java.awt.WindowAdapter  它就空实现了接口WindowListener的全部方法,它就是一个缺省适配类。

java.awt中很多的缺省适配类,可以自己看下。

时间: 2024-11-03 22:33:50

设计模式-缺省适配类.的相关文章

设计模式--缺醒适配器模式

http://www.cnblogs.com/xwdreamer/archive/2012/03/29/2424008.html在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方法不就行了吗? 为什么一定要有抽象类这个概念?为什么就不能把

java 设计模式-缺省适配器模式

本文转载地址:http://www.cnblogs.com/iyangyuan/archive/2013/03/11/2954808.html 在程序设计过程中,读者很可能遇到这样一种困境:设计了一个接口,但实现这个接口的子类并不需要实现接口中的全部方法,也就是说,接口中的方法过多,对于某些子类是多余的,我们不得不浪费的写上一个空的实现. 今天小菜提到的"抽象接口",就是用来解决这个问题的. 为了不误导读者,先说明一下,什么是"抽象接口". 所谓"抽象接口

缺省适配模式

缺省适配模式是为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展. 在很多情况下,必须让一个具体类实现某一个接口,但是这个类又用不到接口所规定的所有的方法.通常的处理方法是,这个具体类要实现的所有的方法,那些有用的方法要实现,那些没用的方法也要有空的.平庸的实现. 例如,一个和尚接口如下所示: public interface 和尚 { public void 吃斋(); public void 念经(); public void 打坐(); public v

工厂设计模式的探讨——iOS类簇的应用分析

工厂设计模式的探讨--iOS类簇的应用分析 一.何为设计模式 什么是设计模式,先来看段度娘的话: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 其实我们不需要这么专业,在我的理解,设计模式就是一种规范化的编程习惯,养成了这样的思想与习惯,

设计模式:缺省适配器模式

原创:http://leihuang.org/2014/12/06/default-adapter/ Structural 模式 如何设计物件之间的静态结构,如何完成物件之间的继承.实 现与依赖关系,这关乎着系统设计出来是否健壮(robust):像是易懂.易维护.易修改.耦合度低等等议题.Structural 模式正如其名,其分类下的模式给出了在不同场合下所适用的各种物件关系结构. Default Adapter 模式 Adapter 模式 Bridge 模式 Composite 模式 Deco

从头认识java-7.6 适配设计模式究竟适配类?还是适配接口?

这一章节我们来讨论一下适配的问题? 说白了,就是可以使用任何对象调用某个方法,而这个对象只需要符合某种协议. 而这种协议的实现有两种方法:继承和接口,但是一般都是使用接口,因为他的代码复用性比继承强,而且继承本身还包含父类的很多实现,造成不必要的混淆.而且通过接口我们可以实现多重接口(类似多重继承) 下面是两组对比的代码: package com.ray.ch07; class father { private int id = 0; private void sleep() { } publi

设计模式——1.概述&UML类图和时序图

声明:设计模式相关文章均整理修改自网络,原文地址:图说设计模式 学习设计模式的3个层次—— 1.熟悉所有设计模式: 2.能够用代码实现: 3.运用到工作的项目中. 设计模式指导软件开发,学习设计模式首先需要了解相关UML图,下面将对UML类图做相关介绍. 重点需要明白,类图中各个类之间的关系,各个类之间线条.箭头的含义. 应该能将类图所表达的含义和最终的代码对应起来. 一.从一个示例开始 请看下面的类图,类之间的关系是我们需要关注的: 1.车的类图结构为<<abstract>>,表

设计模式学习(1) --- 3类工厂模式

   讲个故事吧.从前一个老板非常有钱,非常喜欢数码产品手机,经常喜欢买智能手机,那么怎么买?当然,可以自己去各个手机店买,比如去苹果店,三星店买.但是老板是非常忙的,怎么办?老板是程序员出生.面向对象嘛.加个层次,叫秘书去买,把要买的型号,写张纸条给秘书即可.为什么这样做,对老板来说当然省事了,直接窃取秘书的劳动成果即可(因为付薪水了嘛).秘书根据老板的指示去做,要买什么牌子手机就去相应的专卖店买即可.OK,这样应付了一段时间,因为这个时期智能手机刚刚兴起,也就几家可以做. 时光飞逝,岁月如梭

设计模式 (4)类图二

导言 关联关系 关联定义 类图描述关联 关联的多重性 一对一关联 如下图所示一对一静态建模表示法 代码显示显示主要体现部分 一对多关联 如下图所示一对多关联显示 代码显示显示主要体现部分 规定数值关联 如下图所示规定数值关联显示 可选关联 如下图所示可选关联显示 多对多关联 如下图所示多对多关联显示 三元关联 一元关联自关联 关联类 总结 导言 前面第一篇类图文章,介绍了类图和类以及类图的画法并提及了对象的表示.现在我们来描述一下类图之类之间的关联关系. 关联关系 关联关系(Associatio