`
xyheqhd888
  • 浏览: 409339 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

第2章 接口型模式介绍

阅读更多

1. 抽象类和接口之间的区别:

  • 一个类可以实现任意多个接口,但它最多只能继承一个抽象类。
  • 一个抽象类可以包含有若干个非抽象方法。但在接口中,无论一个方法是否被显式地声明为抽象的,接口中的方法都是抽象方法。
  • 抽象类可以声明声明和使用字段,而接口却不行,尽管接口可以创建static final常量。
  • 抽象类方法的可见性可以是public、protected、private或者修饰符(表示包内可见);而接口方法的可见性修饰符只能是public。
  • 抽象类可以定义构造器,而接口不行。
  • 继承一个抽象类的各类之间通常具有某种父子关系,而实现某个接口的各个类之间可以没有父子关系。

 2. 对于下面这个定义的火箭仿真类接口的具体代码:

   

package com.oozinoz.simultation;

public interface RocketSim
{
    abstract double getMass();
    public double getThrust();
    void setSimTime(double t);
}

 下面说明正确的是(A,B,D)

  • A.RocketSim接口中的三个方法都是抽象方法,尽管只有getMass()方法显式地声明为抽象的。
  • B.RocketSim接口中的三个方法都是公有方法,尽管只有getThrust()方法被显式地声明为公有的。
  • C.接口被声明为“公有接口”,即使省略了public关键字,它也应该是公有的。
  • D.可以再创建一个接口,如RocketSimSolid接口,并扩展RocketSim接口。
  • E.每个接口必须至少含有一个方法。
  • F.接口可以声明实例字段,实现该接口的类也必须声明此字段。
  • G.虽然不能实例化一个接口,但接口定义可以声明构造器方法,要求实现该接口的类必须提供具有指定参数的构造器。

答案解析:

      接口中的方法总是抽象和公开的,无论是否被显式地声明为abstract及public。

      接口的可见性受限于其所在的包,此处可见性修饰符为public,所以com.oozinoz.simulation包之外的其他类可以访问该接口。

      一个接口可以扩展另一个接口,如List接口和Set接口都扩展了java.util包中的Collection接口。

      不含方法的接口被称为“标记”接口,如Cloneable标记接口。有时候,位于类层次结构高层的方法,如Object.clone()方法,并不适合下面的各个子类。这时,我们可以创建一个标记接口,用于标识哪些子类需要这个方法,哪些子类不需要这个方法。Object类的子类中需要clone()方法的子类可以声明自己实现了Cloneable标记接口。

      接口并不能声明实例字段,不过它可以通过声明static和final修饰的字段来声明常量。

      接口不可以定义构造器方法。Java接口也无法要求实现它的类提供任何特定的构造器方法。

  3. 请举出一个含有方法的接口例子,说明类在实现接口的方法时并不一定要执行若干操作或返回某个值。

      当类被注册为一个监听器时就是一个例子;类仅仅为了自己而接收通知,而不是为了调用者。比如,我们也许想在MouseListener.mouseDragged()发生时采取动作,而对于相同监听者,MouseListener.mouseMoved()方法体是空白的。

  4. 超越普通接口:

      适当地使用Java接口能够简化并完善我们的程序设计,尽管有时候这种设计超出了普通接口的定义和使用方法。

      如果期望:将类的外部接口适配客户期望的接口,可应用Adapter模式

      如果期望:为一组类提供一个简单的接口,可以使用Facade模式

      如果期望:为单个对象和群组对象定义共同的接口可以使用Composite模式

      如果期望:将实现与抽象相分离以便二者独立演化可以使用Bridge模式

每种设计模式都旨在解决不同环境中的某个问题。面向接口的设计模式通常用于需要对一个类或者一组类的方法的访问方式进行定义或重定义的场合。例如,某个类拥有我们需要的功能,但它的方法名却不满足客户的期望,这时,我们就可以使用Adapter模式。

分享到:
评论

相关推荐

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第2章 接口型模式介绍 8 第3章 适配器(adapter)模式 13 第4章 外观(facade)模式 27 第5章 合成(composite)模式 39 第6章 桥接(bridge)模式 52 第7章 职责型模式介绍 62 第8章 单例(singleton)模式 67 第9章 观察者...

    《设计模式实训教程》【PPT+类图与代码+样章】

    第2章面向对象设计原则实训 2.1知识讲解 2.1.1面向对象设计原则概述 2.1.2单一职责原则 2.1.3开闭原则 2.1.4里氏代换原则 2.1.5依赖倒转原则 2.1.6接口隔离原则 2.1.7合成复用原则 2.1.8迪米特法则 2.2实...

    Delphi模式编程第二分卷

    第二部分 创建型模式编程 第4章 工厂方法模式(Factory Method) 4.1 模式解说 4.2 结构和用法 4.2.1 模式结构 4.2.2 代码模板 4.2.3 问题讨论 4.3 范例与实践 4.3.1 利用工厂方法模式设计可动态...

    Delphi模式编程第一分卷

    第二部分 创建型模式编程 第4章 工厂方法模式(Factory Method) 4.1 模式解说 4.2 结构和用法 4.2.1 模式结构 4.2.2 代码模板 4.2.3 问题讨论 4.3 范例与实践 4.3.1 利用工厂方法模式设计可动态切换持久层...

    《C++ 设计模式原理与实战大全》第二章

    《C++ 设计模式原理与实战大全》第二章深入探讨了这一主题,帮助开发者掌握如何在C++中有效地应用设计模式。 首先,设计模式是软件工程中的经验总结,它提供了一套通用的解决方案模板,用于处理特定的编程情境。C++...

    《设计模式》中文版(23个设计模式的介绍与运用)

    第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27 2.3.3 ...

    24种java设计模式介绍与6大设计原则

    #### 第2章 代理模式(Proxy Pattern) 代理模式是一种结构型设计模式,它提供了一个代理对象来代表目标对象。当一个对象不希望直接暴露给客户端时,可以通过代理对象来间接地访问该对象。 ##### 描述 代理模式...

    深入浅出设计模式第一章中文.zip

    4. 典型设计模式详解:第一章可能会选取一两个常见模式进行详细解释,例如工厂模式,它是创建型模式中最基础的一种,用于将对象的创建过程封装起来,使代码更易于扩展和维护。 5. 实例分析:通过具体代码示例,展示...

    Java设计模式-第22章-观察者模式.ppt

    Java设计模式中的观察者模式(Observer Pattern)是一种对象行为型模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理和实时...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    2. **结构型模式**:如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式处理对象的组合和关系,提供更好的结构和接口,...

    LTE空中接口技术与性能_第4章空中接口和RRC技术

    ### LTE空中接口技术与性能——第4章空中接口和RRC技术 #### 4.1 概述 在第四代移动通信系统(Long Term Evolution, LTE)中,由于取消了无线网络控制器(Radio Network Controller, RNC),使得空中接口(Air ...

    PHP设计模式介绍.

    #### 第二章:值对象模式—数据的封装艺术 值对象模式是一种用于处理复杂数据类型的设计模式。与实体不同,值对象不具有身份,其唯一性由其属性决定。例如,在金融系统中,货币金额可以被视为值对象,因为它由数值...

    软件设计模式与体系结构孙云山课后习题234章答案.zip

    2. **结构型模式**: - 适配器模式(Adapter):将一个类的接口转换成客户期望的另一个接口。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式(Composite):允许你将对象...

    设计模式(.PDF)

    第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27 2.3.3 ...

    GOLF设计模式(C++语言版)

    第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27...

    c++20设计模式-第4章-原型模式代码

    2. **接口类(Interface Class)**:为了实现不同类型的对象都能被复制,通常会定义一个抽象基类(接口类),它包含一个纯虚的`clone()`方法。所有可被复制的类都继承自这个接口,并实现`clone()`方法。 3. **多态...

    设计模式 刘伟 ppt

    第二章《面向对象设计原则》中,刘伟老师讲解了 SOLID 原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)以及依赖倒置原则(DIP)。这些原则指导我们如何编写易于扩展和...

    Java面向对象程序设计第2版第8章-几个重要的设计模式.ppt

    第8章主要讨论了几个重要的设计模式,包括设计模式的简介、学习设计模式的必要性、框架的概念以及模式的分类。 首先,设计模式是一个针对某一类问题的通用解决方案,这些解决方案在实际项目中被广泛采用并证明是...

    C++Qt设计模式第二版部分程序

    本压缩包包含了"C++Qt设计模式第二版"的第八章和第九章的部分源码,这些章节可能涉及了具体的设计模式实现以及如何在Qt框架下应用它们。 首先,让我们来探讨一下设计模式的基本概念。设计模式是解决软件设计中常见...

Global site tag (gtag.js) - Google Analytics