1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
圖片1:
License, PersonalLicense,BusinessLicense可以,Billing必須是這樣的:
public class Billing {
? ? private Lisense license;
? ? public Billing(License license){
? ? ? ? this.license = license;
? ? }
? ? public void pay(){
? ? ? ?// some code
? ? ? ?this.license.calcFee();
? ? ? ?// some code
? ? }
? ? public void setLicense(License license){
? ? ? ? this.license = license;
? ? }
}
它看起來像Strategy pattern,它允許您定義一系列算法 (?License
),將它們中的每一個(gè)放入一個(gè)單獨(dú)的類 (?PersonalLicense
,?BusinessLicense
),并使它們的對(duì)象可以互換。主要特點(diǎn)是該類Billing
只知道它有一些許可證對(duì)象,calcFee
而不知道具體的實(shí)現(xiàn)。稍后,為了支持新的許可證類型,您將創(chuàng)建新的實(shí)現(xiàn)License
并且不會(huì)修改Billing
.
圖二:
User1, User2, User3, 必須是類似的東西,具有相應(yīng)的 U*Ops:
public class User1 {
? ? private U1Ops u1Ops;
? ? public User1(U1Ops u1Ops){
? ? ? ? this.u1Ops = u1Ops;
? ? }
}
// usage of classes
OPS ops = new OPS();
User1 user1 = new User1(ops);
User2 user2 = new User2(ops);
看起來像是來自SOLID的接口隔離原則示例,它指出不應(yīng)強(qiáng)制客戶端(User1
、、)依賴于它不使用(只需要)的User2
方法。User3
User1
op1()
圖三:
與前面的示例一樣,關(guān)聯(lián)必須通過實(shí)例字段來實(shí)現(xiàn)User
。這些圖演示了依賴倒置原則(上部 - 不好的做法,下劃線 - 好的做法)。根據(jù)它,User
必須只知道一些抽象Permissions
接口而不是具體實(shí)現(xiàn),Permissions
類只知道Permissions
它實(shí)現(xiàn)的接口。使用這個(gè)原則,Entities
模塊創(chuàng)建自己的抽象級(jí)別(API) -Permissions
接口并Authorizer
使用它。與之相關(guān)的術(shù)語是依賴注入,通常用于 java 框架(例如Spring Framework?)以實(shí)現(xiàn)模塊之間的低耦合
添加回答
舉報(bào)