一個(gè)擁有多個(gè)客戶類的系統(tǒng),在系統(tǒng)中定義了一個(gè)巨大的接口(胖接口)AbstractService來(lái)服務(wù)所有的客戶類。如圖所示,請(qǐng)指出設(shè)計(jì)存在的問(wèn)題,并基于接口分離原則進(jìn)行重構(gòu)。
某系統(tǒng)提供一個(gè)數(shù)據(jù)轉(zhuǎn)換模塊,可以將來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)轉(zhuǎn)換成多種格式,如可以轉(zhuǎn)換來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)(DatabaseSource)、也可以轉(zhuǎn)換來(lái)自文本文件的數(shù)據(jù)(TextSource),轉(zhuǎn)換后的格式可以是XML文件(XMLTransformer)、也可以是XLS文件(XLSTransformer),原始設(shè)計(jì)方案如圖所示,請(qǐng)指出設(shè)計(jì)存在的問(wèn)題,并基于依賴倒轉(zhuǎn)原則進(jìn)行重構(gòu)。
某系統(tǒng)需要實(shí)現(xiàn)對(duì)重要數(shù)據(jù)(如用戶密碼)的加密處理,在數(shù)據(jù)操作類(DataOperator)中需要調(diào)用加密類中定義的加密算法,系統(tǒng)提供了兩個(gè)不同的加密類,CipherA和CipherB,它們實(shí)現(xiàn)不同的加密方法,在DataOperator中可以選擇其中的一個(gè)實(shí)現(xiàn)加密操作。請(qǐng)指出設(shè)計(jì)存在的問(wèn)題,并基于里氏代換原則進(jìn)行重構(gòu)。