接口域仇,抽象類刑然,工廠設(shè)計模式,代理模式

一暇务、接口的結(jié)構(gòu):

  • 抽象方法
  • 全局常量
public interface InterfaceA {
     public static final String PRINT = "print";
     public abstract void print();
}

image.png

Modifier 'static' is redundant for interface fields修飾符'static'對于接口字段是多余的.

最終寫法:

public interface InterfaceA {
     String PRINT = "print";
     void print();
}

public interface InterfaceB {
    String HELLO = "Hello world";
    void sayHello();
}
  • 其他內(nèi)部結(jié)構(gòu)

    • 內(nèi)部類
    • 內(nèi)部抽象類
    • 內(nèi)部接口
public interface InterfaceA {
     String PRINT = "print"; // 很少直接在接口里定義全局常量
     void print();

     interface InternalA{
          void test1();
     }
     class A{
          public void test() {
          }
     }

     abstract class BB{
          public abstract void test();
     }
}

二泼掠、接口和抽象類

抽象類可以實現(xiàn)接口,但接口不能繼承抽象類垦细。接口可以繼承多個接口

public abstract class AbstractA implements InterfaceA{
}

public interface InterfaceC extends InterfaceA, InterfaceB { 
}

public class TestImpl implements InterfaceC {
    public void print() {
        System.out.println(PRINT);
    }

    public void sayHello() {
        System.out.println(HELLO);
    }
}

三 择镇、使用接口定義標(biāo)準(zhǔn)

四、工廠設(shè)計模式

三要素:

  • 接口(標(biāo)準(zhǔn))括改,
  • 具體實現(xiàn)類腻豌,
  • 中間層(工廠類)

中間層不需要普通屬性,所以方法定義為static。

//接口類
public interface Fruit {
    void eat();
}
// 具體實現(xiàn)類
public class Apple implements Fruit {
    public void eat() {
        System.out.println("吃蘋果...");
    }
}
public class Cherry implements Fruit {
    public void eat() {
        System.out.println("eat cherry...");
    }
}
//工廠類
public class FruitFactory {
    public static Fruit getInstance(String className) {
        if (className.equals("Apple")) {
            return new Apple();
        } else if (className.equals("Cherry")) {
            return new Cherry();
        } else {
            return null;
        }
    }
}

// 測試類
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        Fruit fruit = FruitFactory.getInstance(s);
        fruit.eat();
    }
}

五 吝梅、代理設(shè)計模式

首先理解下概念:
代理設(shè)計模式是 在不改變源碼的情況下虱疏,實現(xiàn)對目標(biāo)對象的功能擴(kuò)展

  • 靜態(tài)代理
public interface Subject {
    void get(); // 核心操作主題
}

public class RealSubject implements Subject {
    public void get() {
        System.out.println("真實主題..."); //真實主題
    }
}

public class ProxySubjcet implements Subject {
    private Subject subject; // 代理的真實主題
    public ProxySubjcet(Subject subject) {
        this.subject = subject;
    }
    public void prepare() {
        System.out.println("正式主題開始前的準(zhǔn)備...");
    }
    public void get() {
        prepare();
        subject.get(); // 真實主題
        destory();
    }
    public void destory() {
        System.out.println("主題結(jié)束之后的完善工作...");
    }
}

  public static void main(String[] args) {
        // 靜態(tài)代理的實現(xiàn)
        Subject subject = new ProxySubjcet(new RealSubject());
        subject.get();
    }
  • 動態(tài)打理
final RealSubject realSubject = new RealSubject();
        Subject subject = (Subject) Proxy.newProxyInstance(
                realSubject.getClass().getClassLoader(),
                realSubject.getClass().getInterfaces(),
                new InvocationHandler() {
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("開始前的準(zhǔn)備");
                        // 執(zhí)行目標(biāo)方法
                        Object invoke = method.invoke(realSubject, args);
                        System.out.println("結(jié)束之后的完善");
                        return invoke;
                    }
                }
        );
        subject.get();
  • Cglib代理

理解java的三種代理模式

六苏携、抽象類和接口的區(qū)別

類是共性 對象是個性

image.png

區(qū)別:

區(qū)別 抽象類 接口
定義關(guān)鍵字 abstract interface
組成 屬性做瞪,常量,抽象右冻、構(gòu)造装蓬、普通方法 抽象方法,全局常量
權(quán)限 各種權(quán)限 public
子類實現(xiàn) extends單繼承一個抽象類 implements 實現(xiàn)多個接口
關(guān)系 抽象類可以實現(xiàn)多個接口 接口不能繼承抽象類国旷,但接口利用extends實現(xiàn)接口的多繼承
對象實例化 依靠子類對象的向上轉(zhuǎn)型實現(xiàn)抽象類或者接口的實例化 同←
設(shè)計模式 模板設(shè)計模式 工廠設(shè)計模式矛物,代理設(shè)計模式
操作局限 單繼承局限 沒有單繼承局限

通過以上,抽象類和接口都可以限制子類要覆寫的方法要求跪但,當(dāng)抽象類和接口都可以實現(xiàn)的情況下履羞,優(yōu)先考慮接口,而抽象類在實際應(yīng)用中屡久,往往作為接口和普通類之間的過渡來使用忆首。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市被环,隨后出現(xiàn)的幾起案子糙及,更是在濱河造成了極大的恐慌,老刑警劉巖筛欢,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浸锨,死亡現(xiàn)場離奇詭異,居然都是意外死亡版姑,警方通過查閱死者的電腦和手機(jī)柱搜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剥险,“玉大人聪蘸,你說我怎么就攤上這事”碇疲” “怎么了健爬?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長么介。 經(jīng)常有香客問我娜遵,道長,這世上最難降的妖魔是什么壤短? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任魔熏,我火速辦了婚禮衷咽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蒜绽。我一直安慰自己镶骗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布躲雅。 她就那樣靜靜地躺著鼎姊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪相赁。 梳的紋絲不亂的頭發(fā)上相寇,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機(jī)與錄音钮科,去河邊找鬼唤衫。 笑死,一個胖子當(dāng)著我的面吹牛绵脯,可吹牛的內(nèi)容都是我干的佳励。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼蛆挫,長吁一口氣:“原來是場噩夢啊……” “哼赃承!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悴侵,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤瞧剖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后可免,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抓于,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年浇借,在試婚紗的時候發(fā)現(xiàn)自己被綠了捉撮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡逮刨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堵泽,到底是詐尸還是另有隱情修己,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布迎罗,位于F島的核電站睬愤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏纹安。R本人自食惡果不足惜尤辱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一砂豌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧光督,春花似錦阳距、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至船老,卻和暖如春咖熟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柳畔。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工馍管, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薪韩。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓确沸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躬存。 傳聞我的和親對象是個殘疾皇子张惹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 設(shè)計模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計原則時需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實際上岭洲,這兩者...
    彥幀閱讀 3,736評論 0 14
  • 陶皮閱讀 222評論 0 3
  • 一盾剩、準(zhǔn)備工作: 1.準(zhǔn)備一個 8GB 或以上容量的 U 盤雷激,確保里面的數(shù)據(jù)已經(jīng)妥善備份好(該過程會抹掉 U 盤全部...
    飛魚ll閱讀 1,528評論 0 1
  • 在即將到來的紀(jì)念日里,喵喵決定來虐狗啦告私。若不是阿狗提醒喵喵屎暇,大概喵喵永遠(yuǎn)都不會記得這一天吧。是的驻粟,四年前的10月2...
    白水百合閱讀 588評論 0 0
  • 水石軒主人閱讀 98評論 0 0