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分钟学会React Context API
    Soft skill
    前端-页面性能调试:Hiper
    js对secure的支持是没问题的,httponly是为限制js而产生的,当然httponly的cookie也不会被js创建
    关于go的不爽
    Windows上mxnet实战深度学习:Neural Net
    wget获取https资源
    使用windows上 mxnet 预编译版本
    NVIDA 提到的 深度框架库
    Windows下编译mxnet
  • 原文地址:https://www.cnblogs.com/ruixinyu/p/5578280.html
Copyright © 2011-2022 走看看