zoukankan      html  css  js  c++  java
  • 常量接口模式

    常量接口模式

    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.     } 
  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/ruixinyu/p/5578280.html
Copyright © 2011-2022 走看看