《Java设计模式》之接口模式
-----------模式是思想的体现,而非详细的实现。
抽象的讲,类的接口是类同意其它类对象訪问的方法与字段集。接口通常代表一种承诺,即方法须要实现接口方法名表示的操作,遵循代码凝视和其它文档说明。类的实现就是方法体中的代码。
在这一点上。Java接口的优势就出来了。不论什么一个实现了一个Java接口所规定的方法的类都能够具有这个接口的类型,而一个类能够实现随意多个Java接口,从而这个类就有了多种类型。
Java接口和Java抽象类的存在就是为了用于详细类的实现和继承的,假设你准备写一个详细类去继承还有一个详细类的话,那你的设计就有非常大问题了。Java抽象类就是为了继承而存在的,它的抽象方法就是为了强制子类必须去实现的。使用Java接口和抽象Java类进行变量的类型声明、參数是类型声明、方法的返还类型说明。以及数据类型的转换等。而不要用详细Java类进行变量的类型声明、參数是类型声明、方法的返还类型说明。以及数据类型的转换等。
java将接口概念提升为独立的结构。体现了接口(对象必须遵循的承诺)与实现(对象怎样履行承诺)的分离。
java接口同意多个类提供同样的功能,也同意一个类同一时候实现多个接口。
java中抽象类与接口的差别:
1.一个类能够实现多个接口,但却仅仅能继承最多一个抽象类。
2.抽象类能够包括详细方法。接口的全部方法都是抽象的。
3.抽象类中能够声明和使用字段。接口则不能能,但能够创建静态的final常量。
4.抽象类中的方法能够是public、protected、private或者默认的package,接口的方法都是public.
5.抽象类能够定义构造函数,接口不能。
java接口的优势在于它限制了对象之间的协作。这样的约束事实上提供了更大的自由。即使实现接口的类的实现发生了巨大变化,接口的client仍然能够不受影响。
小结:
接口的威力在于它描写叙述了在类协作中它所期望与不期望的行为。接口与抽象类非常相似,定义行为却并不提供实现。
《Java设计模式》之接口模式的更多相关文章
- Java设计模式——装饰者模式
JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- JAVA设计模式--装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...
- 折腾Java设计模式之建造者模式
博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...
- 折腾Java设计模式之备忘录模式
原文地址:折腾Java设计模式之备忘录模式 备忘录模式 Without violating encapsulation, capture and externalize an object's int ...
- 折腾Java设计模式之状态模式
原文地址 折腾Java设计模式之状态模式 状态模式 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.这种类型的设计模式属于行为型模式.在状态模式中,我们创建表示各种状态的对象 ...
- 折腾Java设计模式之访问者模式
博客原文地址:折腾Java设计模式之访问者模式 访问者模式 Represent an operation to be performed on the elements of an object st ...
- 折腾Java设计模式之命令模式
博客原文地址 折腾Java设计模式之命令模式 命令模式 wiki上的描述 Encapsulate a request as an object, thereby allowing for the pa ...
- Java设计模式之工厂模式(Factory模式)介绍(转载)
原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...
- Java设计模式之代理模式(静态代理和JDK、CGLib动态代理)以及应用场景
我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没 ...
随机推荐
- $("[lay-id='"+this.id+"']")
$("[lay-id='"+this.id+"']") $("[lay-id='"+this.id+"'] .layui-tabl ...
- 安装Yellowfin报错——No such file or directory: '/tmp/pip-build-jykvuD/YellowFin/README.md'
https://blog.csdn.net/quqiaoluo5620/article/details/80608474 在Pycharm中安装Yellowfin时一直报错"no such ...
- PHP:Invalid argument supplied for foreach()错误原因及解决办法
在php中使用foreach循环遍历时报Invalid argument supplied for foreach()错误,是因为循环的数据不是一个有效的数组. 因此我们只要在foreach之前判断一 ...
- js中sync、defer、async的区别
<script src="script.js"></script> 没有 defer 或 async,浏览器会默认为同步sync,会立即加载并执行指定的脚本 ...
- HDU - 2058 The sum problem(思路题)
题目: Given a sequence 1,2,3,......N, your job is to calculate all the possible sub-sequences that the ...
- 简谈Redis
1.为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发.当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中 ...
- matplotlib.pyplot.pcolormesh
matplotlib.pyplot.pcolormesh(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, shading ...
- PAT 1077. 互评成绩计算
PAT 1077. 互评成绩计算 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个 ...
- 【01】什么是AJAX
什么是AJAX AJAX(异步 JavaScript 和 XML)是 synchronous(英[ˈsɪŋkrənəs]) JavaScript and XML 的简称. AJAX不是一门新的编程 ...
- css3 & background & background-image
css3 & background & background-image https://developer.mozilla.org/en-US/docs/Web/CSS/backgr ...