常量接口模式
1.接口有两种定义:
(1)对外的API.
(2)interface的声明.
关于接口的设计模式:
(1)定制服务模式:通过把每个服务都设为一个接口,这样可以粒度化每个服务。
如果需要某个特定的服务的组合,则只需要直接扩展细粒度的接口即可。
java不允许多重继承,也就是说一个子类只能有一个父类,Son extends FatherA,FatherB 是错误的为了弥补这点不足,java允许实现多个接口, 接口就是给出一些没有内容的方法,类似于C++中的虚类。到具体用的时候再由用的方法自己定义内容,要注意的是想用接口必须实现接口的所有方法。
其实是因为java不支持多继承才产生了接口,接口是用来规范类的它可以避免类在设计上的不一致,这在多人合作的开发中犹为重要,就比如接口中有A方法,那么实现这个接口就必须实现A方法,这就形成了一种规范,也就是说,A继承了B,但却想使用C的一个方法,但又不能再继承,所以就使用了C的接口。
Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为你结构层次上的顶层。
- interface InternetService{
- public void connect();
- public void disconnect();
- }
- interface MailService{
- public void send();
- public void receive();
- }
- interface VirusService{
- public void begin();
- public void end();
- }
- class InternetServiceImpl implements InternetService{
- public void connect(){
- System.out.println("开始连接网络...");
- }
- public void disconnect(){
- System.out.println("开始关闭网络...");
- }
- }
- class MailServiceImpl implements MailService{
- public void send(){
- System.out.println("开始发送邮件...");
- }
- public void receive(){
- System.out.println("开始接收邮件...");
- }
- }
- class VirusServiceImpl implements VirusService{
- public void begin(){
- System.out.println("开始检查病毒...");
- }
- public void end(){
- System.out.println("检查病毒完毕...");
- }
- }
- interface Menu1 extends InternetService,MailService{
- }
- interface Menu2 extends InternetService,VirusService{
- }
- class Menu1Impl implements Menu1{
- private InternetService is;
- private MailService ms;
- public Menu1Impl(InternetService is,MailService ms){
- this.is = is;
- this.ms = ms;
- }
- public void connect(){
- is.connect();
- }
- public void disconnect(){
- is.disconnect();
- }
- public void send(){
- ms.send();
- }
- public void receive(){
- ms.receive();
- }
- }
- class Menu2Impl implements Menu2{
- private InternetService is;
- private VirusService vs;
- public Menu2Impl(InternetService is,VirusService vs){
- this.is = is;
- this.vs = vs;
- }
- public void connect(){
- is.connect();
- }
- public void disconnect(){
- is.disconnect();
- }
- public void begin(){
- vs.begin();
- }
- public void end(){
- vs.end();
- }
- }
- public class ServiceDemo{
- public static void main(String args[]){
- InternetService is = new InternetServiceImpl();
- MailService ms = new MailServiceImpl();
- VirusService vs = new VirusServiceImpl();
- Menu1Impl m1 = new Menu1Impl(is,ms);
- Menu2Impl m2 = new Menu2Impl(is,vs);
- System.out.println("检测menu1的功能中......");
- m1.connect();
- m1.disconnect();
- m1.send();
- m1.receive();
- System.out.println("检测menu2的功能中......");
- m2.connect();
- m2.disconnect();
- m2.begin();
- m2.end();
- }
- }
常量接口模式
原文:http://www.cnblogs.com/ruixinyu/p/5578280.html