(一)接口的前身(前提):协定
协定
比如物件之间的协定,物件X与Y动作达成了协定,因此我们会呼叫物件X来执行Y动作
根据协定设计类别优点:
(1)事前的规划将使类别更完善
(2)较佳的类别版本控制取向,每一个版本都是为一个新的协定
(3)有助于团队的开发
i Programming in the Large
ii 使子系统/团队都遵守相同的协定
(4)使用起来较有弹性,不管现在或未来,类别X都可以和遵守协定的类别互动
(二)接口
接口的涵义:
a代表用户端与伺服端之间的协定
b不包含资料及任何实作的程式码
c用户端(要求服务的物件),透过接口与伺服端沟通
d伺服端(根据接口协定,提供服务的物件),伺服端中实作接口以满足协定
(三)优点,为什么要使用接口
泛用性
a用户端的程式码将和使用的资料库脱钩
b允许我们建立泛用的资料存取程式码
多型(多态)
(1)当不同的类别均支援相同的操作时
a只需要学习一种物件模型,就可以使用不同的类别
b使用起来更方便且具有弹性
(2)使用接口轻易就可实作多型
(四)泛用型资料层
ADO.Net的介面
ADO.Net为资料类别提供了许多介面:
i IDataReader
ii IDataAdapter
iii IDbConnection
iv IDbCommand
v IDbDataAdapter
使用ADO.Net的介面来开发泛用型的资料优缺点:
a资料元件可跨不同的资料库使用
b某些资料元件特有的功能将隐藏在介面里头,仍然可以存取,但将破坏其泛用性
以介面的观点撰写程式
实作方式:透过物件产生器隐藏真正使用的型别
Imports db=System.Data.OleDb
Public Class DataAccess
…
dim dbConn as System.Data.IDbConnection
dbConn=me.CreateConnection()
dbConn.Open()
End Class
Private Function CreateConnection() as System.Data.IDbConnection
return New db.OleDbConnection("…")
End Function
Private Function CreateCommand(…) as System.Data.IDbCommand
return new db.OleDbCommand(sql,dbConn)
End Function
转移资料来源
当资料来源异动时,只需要更改物件产生器——泛用,多态
a在资料元件中的程式码仍然不变
Private Function CreateConnection() as System.Data.IDbConnection
return new ss.SqlConnection("…")
End Function
Private Function CreateCommand(…) as System.Data.IDbCommand
return new ss.SqlCommand(sql,dbConn)
End Function
b继承