Java類庫中一些反模式的API

2021-06-02 00:06:10 字數 982 閱讀 2474

了解和使用過jdbc類庫的同學可能知道,resultset類有大量的get***和update***方法,preparedstatement類有大量的set***方法,是區分型別引數的方法,每一種新型別出現都會在所有這些介面中新增新的對應的方法,這不僅導致由於新增方法導致了介面不相容的問題,還增加了類庫維護者,jdbc驅動實現者的負擔,而對使用者沒有過多的好處:

short getshort(int columnindex);

int getint(int columnindex);

void updateshort(int columnindex, short x);

void updateint(int columnindex, int x);

不僅如此,resultset類介面針對相同的型別還提供了諸如此類的方法,就是相同的方法名,引數不同:

short getshort(int columnindex);

short getshort(string columnname);

void updateshort(int columnindex, short x);

void updateshort(string columnname, short x);

而resultset類的子類rowset也模仿了這類風格,提供了很多不同型別的set方法來設定引數。

雖然通過修改基於型別名稱的方法名相比於overload是一種更好的風格,然而這種風格一旦濫用,將造成極大的困惑,事實上,通過提供乙個類似valuesetter這樣的介面可以很好的解決這類問題,這個介面只是底層具體值的**類,通過呼叫這個介面的各種方法來間接的維護底層的一些資料,也不暴露底層的實現細節,還不打破上層介面resultset的相容性,而且這類物件能夠在resultset類,preparedstatement類或者有類似需求的子類中復用,而如果新增新的型別,維護人員只需要維護這乙個類就行了

math類中一些基本方法

package com.niuke.test public class mathdemo math.pi 記錄的圓周率 math.e 記錄e的常量 math中還有一些類似的常量,都是一些工程數學常用量。math.abs 求絕對值 math.sin 正弦函式 math.asin 反正弦函式 math....

Date 類中一些特殊說明

原文 你可能不知道的 date 類 date 是 js 中的重要的乙個內建物件,其實例主要用於處理時間和日期,其時間基於 1970 1 1 世界標準時間 起的毫秒數,時間戳長度為 13 位 不同於 unix 時間戳的長度 10 位 對於日期和時間,我們有無數的使用場景,因此需要特別注意一些細節和約定...

Date 類中一些特殊說明

原文 你可能不知道的 date 類 date 是 js 中的重要的乙個內建物件,其實例主要用於處理時間和日期,其時間基於 1970 1 1 世界標準時間 起的毫秒數,時間戳長度為 13 位 不同於 unix 時間戳的長度 10 位 對於日期和時間,我們有無數的使用場景,因此需要特別注意一些細節和約定...