`
java_mzd
  • 浏览: 583209 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于接口的理解

阅读更多

记得刚开始接触JAVA的时候

胡老师就告诉我们

接口,是一种标准

比如USB接口,就是一种标准

只要实现了这个接口的所有设备,

插入USB插槽,就能在系统中使用

当时大概明白了有这么回事

随着学习的深入

发现其实JAVA中也到处都是接口

JDBC是实现一组接口

GUI中的监听器也是一组接口

多线程中的runnable是接口

到处都是接口

但是关于接口的感受也就是通过记住那么些定义、概念

一直就模模糊糊

始终没有很直观的理解和感受,

 

 

随着时间的蔓延

也感觉到了其实我们生活中到处都是各种接口,各种标准

不仅仅在JAVA中

其实我们商学院的课程中也多次提到了接口这个概念

Operation Managerment中关于供应量和物流的管理中就曾多次提到

我们只需要关注核心业务

至于其他的一些业务,

我们只需要好一个一个标准(接口)

有入口,有出口,然后外包给其他公司

这样便能通过一个个标准、接口实现无缝连接

 

这学期的SOA中更是几乎全是基于接口的概念

我们做好一个一个组件

每个组件都有统一的出口和入口

然后把一个一个组件通过标准连接起来

便可以得到满足不同需求的系统

 

 

在管理方面只管的接触了这么多有关接口的概念

但是在JAVA中

其实也就一直记得胡老师说过的那个关于USB的例子

还有在某个教程里

胡老师特别用方框给我们醒目的说了一句话

------优秀的程序员定义接口------

当时就觉得总有一天,自己会是优秀的程序员

自己会定义接口

 

在别的学习中

对接口也算是有个比较的感受了

 

在JAVA中,写了应该也有过万行代码了

接口也是用了不少

也算是有个模模糊糊的概念

但是其实关于接口还是有很多模糊 的地方

 

怎样定义接口?

接口的本质到底是什么?

接口到底是怎么实现的?

怎么样一种流程?

 

一直懵懵懂懂,

 

只是知道

使用接口,可以通过多态性为接口实例化,再使用接口时,就能使用子类中复写过的方法

通过多态性,每次都可以通过父类来直接调用子类方法

 

在写山寨QQ和远程监控中,使用监听器模型,自己也算是定义过好几回接口了

也使用了好几回了

可惜当时都一门心思陶醉于监听器模型可以很好的将事件和处理分离

可以通过实现不同的监听器来对同一个事件达到不同处理效果等等

 

却没有注意到,监听器模型的这些优点

其实多半是因为使用接口,因为多态性可以通过父类直接调用本子类的方法

 

 

关于接口的种种理解

这么扯淡或许都很抽象吧

 

其实能说到这个话题

全是因为这两天项目终于忙完了

难得忙里偷闲

复习JAVA基础

 

在JDBC的复习中

通过JDBC中的种种现象

终于让我明白了接口的奇妙之处

有了更多更直观的感受和体验

 

JDBC就是一组与平台无关的用于执行SQL的标准JAVA API

JDBC中其实是用JAVA写的接口和类

既然都是接口,里面是不能执行任何代码的

那么JDBC到底是怎么操作数据库的呢?

 

JDBC操作数据库其实是通过JDBC驱动来实现的

那么又是怎么通过JDBC驱动来操作数据库的呢?

每个数据库的操作方式是不一样的

 

JDBC其实是提供一组接口,一套标准,

然后每个数据库厂商提供一个JDBC驱动,

JAVA用户其实是通过驱动来实现操作数据库的

什么意思呢?

 

比如说

假如用户要向Oracle数据库中插入数据时要说个“插入Oracle”

向MySQL中插入数据时要说个“插入MySQL”

 

通过JDBC接口

用户只需要说“插入”

至于向具体的数据是怎么具体插入数据库的

则是用户和JDBC不关心的,都是由底下的数据库驱动完成的

 

还不够形象?

再继续

我们要使用数据库时必须先加载数据库驱动类

然后通过URL地址来使用DriverManager对象的getConnection()方法

得到一个数据库连接对象Connection

Connection是个接口

 

查看DriverManager中getConnection()方法源码

不难发现

此方法是通过遍历加载的驱动中

与URL地址向配的的驱动,得到该驱动中实现的Connection对象

 

得到Connection对象后

Connection接口中的createStatement()方法,本身是个抽象方法

此时调用的则是实例化的,从驱动中得到的connection对象

此时调用的,也就是驱动中实现的createStatement()方法

 

其实,

简单的总结

使用接口

就是通过对象的多态性为接口实例化

这样,再使用接口时,调用接口中的方法

其实执行的就是本子类中复写过的方法

 

可是还是不够生动、详细吧

咱们再来看个李兴华的教材中出现的例子

个人感觉很不错

 interface USB{                 //定义USB接口
      public void start();
      public void stop();
}

 class computer{
          public static void plugin(USB usb){//当USB插入时,即调用此方法
                          usb.start();//让USB设备开始工作
                         System.out.println("======USB设备开始工作=====");
                          usb.stop();//让USB设备停止

               }

class Flash implements USB{//U盘
                   pulic void start(){//复写start()方法
                             System.out.println("U盘开始工作");

                    }
                 public void stop(){
                            System.out.println("U盘停止工作");//U盘停止工作

                    }

   } 
}

   class Print implements USB{//打印机
              pulic void start(){//复写start()方法
                                System.out.println("打印机开始工作");

                    }
                 public void stop(){
                              System.out.println("打印机停止工作");//U盘停止工作

                    }
}

    public class InterfaceDemo[

               public static void main(String[] args){
                  Computer.plugin(New Flash());
                Computer.plugin(New Print());

                     }


                }

 

一个USB接口

对于系统来说

它无需关心插入的是什么东西

只需要调用接口中定义的start()来开始启用该设备

至于这个设备到底是怎么样启动的

则是系统不需要关心的,这个启动的方法是由每个设备本身实现的

 

 

写了这么多

估计其实都是大家明白一直都明白的东西吧

只是懵懵懂懂的

不太能说清楚

希望自己这个激动的总结能起码让自己说清楚

能让自己理解的更透彻

 

 

最后的最后

奋斗不止吖

知道了接口又怎么样

胡老师说的好

关键是要在项目中用起来

 

 

再次提醒自己

一。在类设计时,永远不去继承一个已经实现好的类

二。抽象类定义模板,接口定义标准

 

面向对象设计的三大原则

1.开发--闭合原则(对拓展开发,对修改闭合)

2.替换原则(基类可以出现的地方,子类一定可以出现)

3.依赖倒转原则(依赖于抽象,不要依赖于具体)

 

其实就是基于接口和多态的。

 

 

最后再总结一次

 

使用接口,就是同个多态性为接口实例化

这样再调用接口中的方法时,其实就是调用子类中实现的方法

使用接口,如果一个类依赖于一个接口

那么这个接口的任何一个实现的子类都可以满足需求

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} </style> <![endif]-->

把系统抽象的越深,尽量以接口的形式出现

则能越好的做到

对拓展开放

 

 

 

 

分享到:
评论
1 楼 贾懂凯 2010-11-06  
还是意识流~~哎~~

相关推荐

    接口PPT接口接口接口接口接口接口接口接口接口

    接口技术是理解和设计现代微机系统的关键部分。本文将深入探讨接口的基本概念、类型以及其在现代微机原理中的应用。 接口是计算机系统中不同组件间通信的通道,允许数据和控制信号在它们之间传递。接口可以是硬件...

    理解接口interface,j简单的一个demo

    在“理解接口interface,简单的一个demo”这个主题中,我们将深入探讨接口的基本用法以及如何在实际编程中应用。通过定义并实现多个接口,我们可以看到接口如何为不同类提供通用的行为模板,而各个类可以根据自己的...

    操作系统实验 的 理解面向操作命令的接口Shell。

    在用户接口实验中,重点是理解和使用面向操作命令的接口Shell,如bash。Shell是操作系统提供的用户界面,允许用户通过命令行与系统交互。实验内容包括查看bash版本和编写bash脚本来统计特定目录下特定类型文件的数量...

    关于接口联调整理文档

    "关于接口联调整理文档"的压缩包文件提供了定义接口联调规范的相关资料,其中可能包括了接口设计、测试、异常处理以及协同工作等方面的内容。以下是基于这个主题的详细知识点解释: 1. **接口设计**: - 接口定义...

    ArcGIS 编程中对接口的理解

    ArcGIS 编程中对接口的理解,适合前期刚入门的童鞋们学习

    接口模板 接口文档

    接口文档则是详细记录了接口信息的文档,包括接口的URL、请求方法、参数、返回数据等,帮助开发者理解和使用这些接口。 接口模板的创建通常基于一些工具,例如Swagger、Postman Collection、API Blueprint等,这些...

    ukey开票接口电子发票接口文档发票接口文档

    首先,我们要理解“ukey开票接口”。ukey是一种硬件设备,通常包含数字证书,用于安全的身份验证和数据加密。在电子发票系统中,ukey扮演着至关重要的角色,它确保了企业开具和接收电子发票时的数据安全性和合法性。...

    OPC全部接口,包含自定义接口,自动化接口

    这个压缩包文件包含了OPC的全部接口,包括自定义接口和自动化接口,以及一些示例,对于理解和开发OPC相关的应用程序来说非常有价值。 1. **OPC接口详解**: - **OPC DA(Data Access)**:这是最基础的接口,用于...

    HTTP接口和WebService接口

    总的来说,理解并熟练掌握HTTP接口和WebService接口是现代IT开发者必备的技能之一。这不仅涉及网络通信的基本原理,还包括API设计的最佳实践、数据序列化与反序列化、错误处理和安全策略等多个方面。对于"n_...

    东南大学微机接口试卷

    10. **设计与应用**:理解微机接口在实际工程中的应用,如打印机接口、键盘鼠标接口、硬盘接口等,探讨不同应用场景下的接口设计原则和优化策略。 通过对上述知识点的学习和理解,考生不仅能应对东南大学微机接口...

    API接口文档模版.zip

    这份"API接口文档模版.zip"包含了两种格式的文档:一个Markdown(.md)文件和一个PDF文件,旨在提供一个清晰易懂的模板,帮助开发者快速创建和理解API接口的定义。 首先,我们来看Markdown格式的API接口文档模版。...

    c#接口的意义 学习心得 读书笔记 (彻底弄清楚接口,轻松使用接口)

    c#接口的意义是学习c#语言的重要部分,对于初学者来说,理解接口的概念和应用是非常重要的。本文将详细介绍c#接口的定义、特点、优点和实践经验,帮助读者更好地理解和使用接口。 一、什么是接口 在c#语言中,接口...

    接口知识点总结

    2.通过理解开关生产商和电器生产商的例子来理解:接口是一种约定 在编写接口时,所有的方法都是抽象的,不必考虑该方法如何实现。 抽象方法只定义了方法的参数,返回值,访问修饰符,具体实现由子类完成, 从而约定了...

    接口文档模板.docx

    接口文档在软件开发中起着至关重要的作用,它定义了不同系统或组件之间的通信规则,确保数据能够准确、高效地传递。...通过模板化的文档整理,可以帮助开发者更高效地理解和使用接口,降低沟通成本,提高开发质量。

    接口与通讯的实验报告

    本实验报告主要探讨了计算机系统中接口与通讯的基本概念和技术,通过一系列具体的实验,深入理解了接口的功能以及不同设备之间的通信方式。实验内容包括数字式时钟(电子钟)的设计、DA(数模)转换、8253A定时/...

    航信接口文档

    文档中包含的"规范"部分,通常会详细阐述接口的定义、调用方式、参数格式、请求响应规则以及错误处理机制等内容,这对于开发人员理解和实现接口功能至关重要。 "js"和"java"代码示例,是实际应用中的编程语言实现,...

    天气预报接口/weather接口/webservice接口

    在IT行业中,Web Service接口是一种常见的服务交互方式,它允许不同的系统之间通过网络进行数据交换。...理解并熟练使用这类接口,对于开发跨平台的应用程序、构建集成解决方案或者进行数据分析都有重要的作用。

    比较好的接口设计说明书模板

    术语解释将有助于读者更好地理解接口的设计和实现。 四、参考资料 在设计接口时,需要列出有关的参考资料,例如相关的标准、协议、文档等。这些参考资料将有助于开发者更好地理解接口的设计和实现。 五、设计思想...

    网联接口开发文档规范

    10. **文档完整**:开发文档应详尽无遗,包括接口说明、调用示例、异常处理、最佳实践等,以帮助其他开发者理解和使用接口。 通过阅读《网联开发规范.pdf》这份文档,开发者可以深入理解上述知识点,并按照规范进行...

    查看OCX接口方法

    标题"查看OCX接口方法"提示我们,这个话题主要涉及如何检查或理解OCX控件提供的编程接口。这通常对于开发人员来说是至关重要的,因为他们需要知道如何在代码中调用这些接口来实现特定功能。 描述中的“选择ocx文件...

Global site tag (gtag.js) - Google Analytics