常量接口模式

常量接口模式

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. } 
  5. interface MailService{ 
  6.     public void send(); 
  7.     public void receive(); 
  8. } 
  9. interface VirusService{ 
  10.     public void begin(); 
  11.     public void end(); 
  12. } 
  13. class InternetServiceImpl implements InternetService{ 
  14.     public void connect(){ 
  15.         System.out.println("开始连接网络...");  
  16.     } 
  17.     public void disconnect(){ 
  18.         System.out.println("开始关闭网络...");  
  19.     } 
  20. } 
  21. class MailServiceImpl implements MailService{ 
  22.     public void send(){ 
  23.         System.out.println("开始发送邮件...");  
  24.     } 
  25.     public void receive(){ 
  26.         System.out.println("开始接收邮件...");  
  27.     } 
  28. } 
  29. class VirusServiceImpl implements VirusService{ 
  30.     public void begin(){ 
  31.         System.out.println("开始检查病毒...");  
  32.     } 
  33.     public void end(){ 
  34.         System.out.println("检查病毒完毕...");  
  35.     } 
  36. } 
  37. interface Menu1 extends InternetService,MailService{ 
  38. } 
  39. interface Menu2 extends InternetService,VirusService{ 
  40. } 
  41. class Menu1Impl implements Menu1{ 
  42.     private InternetService is; 
  43.     private MailService ms; 
  44.     public Menu1Impl(InternetService is,MailService ms){ 
  45.         this.is = is; 
  46.         this.ms = ms; 
  47.     } 
  48.     public void connect(){ 
  49.         is.connect(); 
  50.     } 
  51.     public void disconnect(){ 
  52.         is.disconnect(); 
  53.     } 
  54.     public void send(){ 
  55.         ms.send(); 
  56.     } 
  57.     public void receive(){ 
  58.         ms.receive(); 
  59.     } 
  60. } 
  61. class Menu2Impl implements Menu2{ 
  62.     private InternetService is; 
  63.     private VirusService vs; 
  64.     public Menu2Impl(InternetService is,VirusService vs){
  65.         this.is = is; 
  66.         this.vs = vs; 
  67.     } 
  68.     public void connect(){ 
  69.         is.connect(); 
  70.     } 
  71.     public void disconnect(){ 
  72.         is.disconnect(); 
  73.     } 
  74.     public void begin(){ 
  75.         vs.begin(); 
  76.     } 
  77.     public void end(){ 
  78.         vs.end(); 
  79.     } 
  80. } 
  81. public class ServiceDemo{ 
  82.     public static void main(String args[]){ 
  83.         InternetService is = new InternetServiceImpl(); 
  84.         MailService ms = new MailServiceImpl(); 
  85.         VirusService vs = new VirusServiceImpl(); 
  86.         Menu1Impl m1 = new Menu1Impl(is,ms); 
  87.         Menu2Impl m2 = new Menu2Impl(is,vs); 
  88.         System.out.println("检测menu1的功能中......");  
  89.         m1.connect(); 
  90.         m1.disconnect(); 
  91.         m1.send(); 
  92.         m1.receive(); 
  93.         System.out.println("检测menu2的功能中......");  
  94.         m2.connect(); 
  95.         m2.disconnect(); 
  96.         m2.begin(); 
  97.         m2.end(); 
  98.     } 
  99. } 
posted @ 2016-06-12 17:31  方圆i  阅读(191)  评论(0)    收藏  举报