常量接口模式

常量接口模式

1.接口有两种定义:

(1)对外的API.

(2)interface的声明.

关于接口的设计模式:

(1)定制服务模式:通过把每个服务都设为一个接口,这样可以粒度化每个服务。

如果需要某个特定的服务的组合,则只需要直接扩展细粒度的接口即可。

  java不允许多重继承,也就是说一个子类只能有一个父类,Son extends FatherA,FatherB 是错误的为了弥补这点不足,java允许实现多个接口, 接口就是给出一些没有内容的方法,类似于C++中的虚类。到具体用的时候再由用的方法自己定义内容,要注意的是想用接口必须实现接口的所有方法。

    其实是因为java不支持多继承才产生了接口,接口是用来规范类的它可以避免类在设计上的不一致,这在多人合作的开发中犹为重要,就比如接口中有A方法,那么实现这个接口就必须实现A方法,这就形成了一种规范,也就是说,A继承了B,但却想使用C的一个方法,但又不能再继承,所以就使用了C的接口。
    Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为你结构层次上的顶层。
 
  1. interface InternetService{ 
  2.     public void connect(); 
  3.     public void disconnect(); 
  4. interface MailService{ 
  5.     public void send(); 
  6.     public void receive(); 
  7. interface VirusService{ 
  8.     public void begin(); 
  9.     public void end(); 
  10. class InternetServiceImpl implements InternetService{ 
  11.     public void connect(){ 
  12.         System.out.println("开始连接网络...");  
  13.     } 
  14.     public void disconnect(){ 
  15.         System.out.println("开始关闭网络...");  
  16.     } 
  17. class MailServiceImpl implements MailService{ 
  18.     public void send(){ 
  19.         System.out.println("开始发送邮件...");  
  20.     } 
  21.     public void receive(){ 
  22.         System.out.println("开始接收邮件...");  
  23.     } 
  24. class VirusServiceImpl implements VirusService{ 
  25.     public void begin(){ 
  26.         System.out.println("开始检查病毒...");  
  27.     } 
  28.     public void end(){ 
  29.         System.out.println("检查病毒完毕...");  
  30.     } 
  31. interface Menu1 extends InternetService,MailService{ 
  32. interface Menu2 extends InternetService,VirusService{ 
  33. class Menu1Impl implements Menu1{ 
  34.     private InternetService is; 
  35.     private MailService ms; 
  36.     public Menu1Impl(InternetService is,MailService ms){ 
  37.         this.is = is; 
  38.         this.ms = ms; 
  39.     } 
  40.     public void connect(){ 
  41.         is.connect(); 
  42.     } 
  43.     public void disconnect(){ 
  44.         is.disconnect(); 
  45.     } 
  46.     public void send(){ 
  47.         ms.send(); 
  48.     } 
  49.     public void receive(){ 
  50.         ms.receive(); 
  51.     } 
  52. class Menu2Impl implements Menu2{ 
  53.     private InternetService is; 
  54.     private VirusService vs; 
  55.     public Menu2Impl(InternetService is,VirusService vs){
  56.         this.is = is; 
  57.         this.vs = vs; 
  58.     } 
  59.     public void connect(){ 
  60.         is.connect(); 
  61.     } 
  62.     public void disconnect(){ 
  63.         is.disconnect(); 
  64.     } 
  65.     public void begin(){ 
  66.         vs.begin(); 
  67.     } 
  68.     public void end(){ 
  69.         vs.end(); 
  70.     } 
  71. public class ServiceDemo{ 
  72.     public static void main(String args[]){ 
  73.         InternetService is = new InternetServiceImpl(); 
  74.         MailService ms = new MailServiceImpl(); 
  75.         VirusService vs = new VirusServiceImpl(); 
  76.         Menu1Impl m1 = new Menu1Impl(is,ms); 
  77.         Menu2Impl m2 = new Menu2Impl(is,vs); 
  78.         System.out.println("检测menu1的功能中......");  
  79.         m1.connect(); 
  80.         m1.disconnect(); 
  81.         m1.send(); 
  82.         m1.receive(); 
  83.         System.out.println("检测menu2的功能中......");  
  84.         m2.connect(); 
  85.         m2.disconnect(); 
  86.         m2.begin(); 
  87.         m2.end(); 
  88.     } 
posted @ 2016-06-12 17:31  方圆i  阅读(159)  评论(0编辑  收藏  举报