可以對(duì)對(duì)象中的某一個(gè)屬性進(jìn)行操作,訪問(wèn)這些數(shù)據(jù)對(duì)外只提供了這么一個(gè)接口。
如果不提供這些方法,屬性若為 private 就變得無(wú)法訪問(wèn)了。
如果屬性變?yōu)?public,就好比,到銀行去存錢(qián),不是通過(guò)柜面進(jìn)行操作的,而是直接跑到銀行的金庫(kù)里面自己去拿錢(qián)了,這樣就很不安全,這個(gè)例子中,可以把銀行金庫(kù)中的錢(qián)看作是某一對(duì)象的屬性,而柜面的工作人員、出納柜臺(tái)就可以看作是 set / get 方法了,也就是讓對(duì)外服務(wù)提供某些接口,具體里面的操作就隱藏起來(lái)了。
二、工廠方法
指的是根據(jù)不同的情況產(chǎn)生不同的對(duì)象,比如:
public static Dao getDao(String dbmsName) throws UnsupportDatabaseException {
if( dbmsName.equalsIgnoreCase("SQL Server") ) {
return new SqlServerDao();
} else if( dbmsName.equalsIgnoreCase("Oracle") ) {
return new OracleDao();
} else if( dbmsName.equalsIgnoreCase("MySQL") ) {
return new MySQLDao();
} else {
throw new UnsupportDatabaseException(dbmsName);
}
}
if( dbmsName.equalsIgnoreCase("SQL Server") ) {
return new SqlServerDao();
} else if( dbmsName.equalsIgnoreCase("Oracle") ) {
return new OracleDao();
} else if( dbmsName.equalsIgnoreCase("MySQL") ) {
return new MySQLDao();
} else {
throw new UnsupportDatabaseException(dbmsName);
}
}
其中 Dao 是 SqlServerDao、OracleDao、MySQLDao 的接口。
上面這段代碼就是一個(gè)典型的工廠方法,通過(guò)傳入的數(shù)據(jù)庫(kù)名稱來(lái)確定,并獲得不同的數(shù)據(jù)庫(kù)處理實(shí)現(xiàn)。若使用的數(shù)據(jù)庫(kù)并沒(méi)有實(shí)現(xiàn),則進(jìn)行異常處理。