设计模式之接口型模式

今天来总结一下接口型模式下的第一个设计模式--------接口型模式。

1.首先来说什么是接口型模式?

答:接口型模式就是利用接口规范类之间的行为使得实现该接口的类可以遵循代码的注释、测试和其他的文档说明,使用接口可以对一个类或者一组类的方法进行定义或者重定义。使用接口型模式的好处就是使得接口和实现分离,不会有相互的影响,并且使得代码更加的清晰明了。

2.接口和抽象类的区别有哪些?

答:a.接口是被实现的,使用的关键字是implements,而抽象类是被继承的,使用的关键字是extends.

  b.接口中的方法不能有实现体,但是抽象类中的可以有实现体

c.接口可以被多实现,但是抽象类只能单继承

d.接口中的方法的修饰符只能是public abstract,省略的话默认也是,但是抽象类中是可以使用protected、public等的修饰符的

e.接口中不能有成员变量,只能有public static final 修饰的常量,而抽象类中可以定义自己的成员变量

f.接口不能有构造方法,但是抽象类可以有

g.接口不能用于实例化对象,抽象类可以

h.接口中不能有静态方法或者是静态块,但是抽象类中可以有

i.除非是抽象类,否则接口中的方法都必须被实现,抽象类中的方法可以不被全部实现还是抽象类

3.接口有哪些特性?

答:a.接口中的方法都会被隐式的指定为public abstract,如果有其他的修饰符出现,编译会出错

b.接口中的变量会被隐式的指定为public static final

c.接口中的方法不能在接口中实现,只能由继承的类来实现

d.接口允许多个类提供相同的功能,也允许一个类实现多个类

4.接口和类、抽象类之间的关系?

答:接口可以继承接口,类可以继承抽象类,实现接口,抽象类可以实现接口,但是接口不能继承类(包括抽象类).

那么为什么会存在这些继承关系呢??接口继承接口就好比类继承类一样,为了扩展该接口,一个接口包含的方法可能已经不能完全适用现在的情况了,我们需要在此基础上添加一些其他的功能,那么就需要一个接口继承现有的接口。类继承抽象类,实现接口就不用说了。抽象类可以实现接口是因为当类在实现接口时没有完全实现所有的方法,就会产生抽象类,这样做的好处是,这个抽象类可以作为以下的类的父类,以后的类可以不用实现接口中的所有的方法,因为抽象类中已经实现了部分,简化了代码的长度。但是为什么接口不能继承抽象类呢??因为接口的定义中说接口中不能有方法的实现体,但是抽象类中是可以有方法体的,但是我感觉本质上可能是因为接口不能含有构造方法,但是抽象类作为一个类肯定是会有构造方法的(不管是程序员自己定义的,还是系统默认的无参的构造方法),所以这一点上就会有矛盾,故,接口是不能继承抽象类的。

当实现了接口的类不满足于接口提供的方法时可以进行方法的重写。

5.重写接口中的方法时需要注意什么?

答:a.类在实现接口的方法时,不能抛出强制性的异常,只能在接口中或者继承接口的抽象类中抛出强制性异常

b.类在重写方法时必须保持方法名一致,并且返回值类型相同或者兼容

6.可以有不存在抽象方法的接口存在吗,就像java中允许一个空类的存在一样?

答:可以有。在java中称为标记接口。当一个接口只有接口的声明而没有内容的时候我们称这样的接口为标记接口。

那么创建这样的一个空接口有什么用呢??a.它可以作为一个公共的接口,相当于所有的接口的祖宗接口,以后的接口可以继承该接口,完成扩展;b.当一个类实现了该标记接口时,它可以没有限制的往里边添加数据,该类实例化的对象可以拥有多态的特性,这是最初谁标记接口的目的。

7.接口型模式的优势有哪些?

答:java接口的优势是限制了对象之间的协作,这种约束提供了更大的好处就是,因为接口中的方法名称没有变,且返回值不会变,即使实现接口的类发生了巨大的变化,也不会对接受数据的客户端有任何的影响。

8.如果一个类不需要实现该接口下的所有的方法,那么它就不能时一个完整的类了么?

答:可以是,有时候接口提供的方法并不需要为调用者提供服务,在某些情况下,实现类可以为实现的方法提供一个空实现体以此来忽略该调用。

9.什么是桩(stub)?

答:当我们创建了一系列用于通知的方法时,则可以考虑提供空实现的接口实现类,即利用以对大括号就实现方法的类即称为桩,关于桩这个概念目前还不是很懂,只知道是占坑的代码。

以上就是粗略的总结了一下接口型设计模式,肯定会有一些问题,还望大神多多指教。

时间: 2024-10-05 23:36:56

设计模式之接口型模式的相关文章

Java设计模式之接口型模式总结

摘要: 原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6508967.html 之前认真学习了Java设计模式中的四大接口型模式,分别为:适配器模式(Adapter).外观模式(Facade).合成模式(Composite).桥接模式(Bridge). 1.在此处再温习一下四种设计模式: (1)适配器模式: 我们能够访问的类中不存在我们要访问的内容时,就可以使用这个适配器模式,当然就类而言,其实不存在什么不能被访问,这里的不能访问都是人

设计模式:接口型模式介绍

1 接口 类的接口 (interface) 就是该类允许其他类对象访问的方法和字段的集合.接口作为对象必须实现的承诺.接口永远不可能被实例化为对象,因此只能定义虚方法和常量字段. 作用: 限制了对象之间的交互(交互可以只用interface来完成,interface进行限制) 与抽象类的区别: 一个类可以实现(implements)任意多个接口,但只能继承(extend)一个抽象类. 一个抽象类可有非抽象方法,可以定义构造器,接口的所有方法都是抽象的. 接口只能声明static final 常量

【设计模式】简单工厂模式

以面向对象的思想和简单工厂模式,写一个C++计算器程序,代码如下: #include <iostream> using namespace std; class Operation { public: Operation(double left, double right) { lhs = left; rhs = right; } const double GetLeft() const { return lhs; } const double GetRight() const { retur

设计模式之简单工厂模式

设计模式之简单工厂模式 动机:         不暴露实例化逻辑来创建对象.通过公共的接口创建新的对象.         这是一个简单的实现,客户端需要一个product,但是client不直接使用new对象,而是通过提供需要的对象信息来找factory得到新的product.         这个factory实例化一个具体的product并返回(转化成抽象的类),client段使用这个抽象的类而不用考虑它具体的实现. 应用举例:        也许工厂模式是使用最多的模式之一.举个例子,一个

设计模式之工厂方法模式

anticipate 预料 = except ant蚂蚁 ic ic卡 ip ip卡 ate吃 我没有预料到小蚂蚁把我的ic,ip卡吃掉了. robust 强壮的 = strong ro rong容祖儿  bu不  st石头 容祖儿不喜欢强壮的石头. maintain 维持 = keep main主要的(大陆)  tain 台湾 大陆和台湾维持着若即若离的关系. 设计模式之工厂方法模式 动机:     一个工厂方法factory method定义了一个接口来创建对象,但是让子类去选择创建哪一个,

设计模式4 结构型模式

设计模式4  结构型模式 目录 代理模式 装饰器 外观模式 适配器模式 代理模式,美国,韩国代理购物 [email protected]:~$ cat main.cpp  #include<iostream> using namespace std; class Item //商品 { public: Item(string kind ,bool fact) { this->kind = kind; this->fact = fact; } string getKind() { r

设计模式之抽象工厂模式

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 最大的好处便是易于交换产品系列,由于具体工厂类,在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需改变具体工厂即可使用不同的产品配置. 他使具体创建实例的过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离. 下面的代码还使用了反射与XML. 代码如下: using System; using System.Collections.Ge

IOS设计模式之四(备忘录模式,命令模式)

本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq)翻译,如果你发现有什么错误,请与我联系谢谢. 备忘录(Memento)模式 备忘录模式快照对象的内部状态并将其保存到外部.换句话说,它将状态保存到某处,过会你可以不破坏封装的情况下恢复对象的状态,也就是说原来对象中的私有数据仍然是私有的. 如何使用备忘录模式 在ViewController.m中增加

Java经典23种设计模式之结构型模式(二)

接上篇,本文介绍结构型模式里的组合模式.装饰模式.外观模式. 一.组合模式(Composite) 组合模式:将对象组合成树形结构,表示"部分--整体"的层次结构.最终达到单个对象和组合对象的使用具有一致性.单看这句话貌似有点抽象,其实比较简单. 以李云龙的独立团为例,目的要统计赵嘉宇一战共歼灭敌人多少个.最高的级别是团,一个团有若干个营,一个营有若干个排,一个排有若干个战士.(为了简化问题,排下面就不设行政单位了).很自然的,李云龙给营长开会回去给老子统计.营长回去给各个排长开会,赶紧