第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

干凈的建筑。方案的理解

干凈的建筑。方案的理解

明月笑刀無情 2023-06-08 14:11:33
你能幫我理解接下來的事情嗎?所以,我讀了 R.Martin 的 Clean Architecture 并且有很多方案。圖片1:我的實(shí)施:Billing.javapublic class Billing {    public Billing(){        //creating of licenses        License personalLicense = new PersonalLicense();        License businessLicense = new BusinessLicense();        //method using        personalLicense.calcFee();        businessLicense.calcFee();    }}License.javapublic interface License {    public void calcFee();}PersonalLicense.javapublic class PersonalLicense implements License {    public PersonalLicense(){        //constructor implementation here    }    @Override    public void calcFee(){        //method implementation here    }}BusinessLicense.javapublic class BusinessLicense implements License {    //private ? users - Unknown type just for example    @Override    public BusinessLicense(){        //constructor implementation here    }    public void calcFee(){        //method implementation here    }}圖二:我的實(shí)施:U1Ops.javapublic interface U1Ops{    public void op1();}U2Ops.javapublic interface U2Ops{    public void op2();}U3Ops.javapublic interface U3Ops{    public void op3();}OPS.javapublic class OPS implements U1Ops, U2Ops, U3Ops{    public OPS(){ ... }    @Override    public void op1() { ... }    @Override    public void op2() { ... }    @Override    public void op3() { ... }}User1.javapublic class User1 {    public User1(){        OPS u1Ops = new U1Ops();        u1Ops.op1();    }}User2.javapublic class User2 {    public User2(){        OPS u2Ops = new U2Ops();        u2Ops.op2();    }}User3.javapublic class User3 {    public User3(){        OPS u3Ops = new U3Ops();        u3Ops.op3();    }}圖三:我的實(shí)施:Permissions.javapublic class Permissions{    public Permissions() { ... }    public classMethod() { ... }}User1.javapublic class User1 {    public User1(){        Permissions p = new Permissions();        p.classMethod();    }}
查看完整描述

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方法。User3User1op1()

圖三:

與前面的示例一樣,關(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)模塊之間的低耦合


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)