日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 的工厂方法及代理模式

發(fā)布時(shí)間:2023/12/10 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 的工厂方法及代理模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java 的工廠方法及代理模式

工廠方法(FactoryMethod)

概述:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。FactoryMethod使一個(gè)類的實(shí)例化延遲到其子類。

適用性:

  • 當(dāng)一個(gè)類不知道它所必須創(chuàng)建的對(duì)象的類的時(shí)候
  • 當(dāng)一個(gè)類希望由它的子類來(lái)指定它所創(chuàng)建的對(duì)象的時(shí)候
  • 當(dāng)類將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類中的某一個(gè),并且你希望將哪一個(gè)幫助子類是代理者這一信息局部化的時(shí)候
  • 示例可參考:http://blog.csdn.net/jason0539/article/details/23020989

    總結(jié):

    FactoryMethod模式是設(shè)計(jì)模式中應(yīng)用最為廣泛的模式,在面向?qū)ο蟮木幊讨?#xff0c;對(duì)象的創(chuàng)建工作非常簡(jiǎn)單,對(duì)象的創(chuàng)建時(shí)機(jī)卻很重要。FactoryMethod解決的就是這個(gè)問(wèn)題,它通過(guò)面向?qū)ο蟮氖址?#xff0c;將所要?jiǎng)?chuàng)建的具體對(duì)象的創(chuàng)建工作延遲到了子類,從而提供了一種擴(kuò)展的策略,較好的解決了這種緊耦合的關(guān)系。

    代理模式(Proxy)

    概述:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)

    示例:引用自http://blog.csdn.net/goskalrie/article/details/52458773

    /**方式一:聚合式靜態(tài)代理* @author Goser (mailto:goskalrie@163.com)* @Since 2016年9月7日*/ //1.抽象主題接口 public interface Manager {void doSomething(); } //2.真實(shí)主題類 public class Admin implements Manager {public void doSomething() {System.out.println("Admin do something.");} } //3.以聚合方式實(shí)現(xiàn)的代理主題 public class AdminPoly implements Manager{private Admin admin;public AdminPoly(Admin admin) {super();this.admin = admin;}public void doSomething() {System.out.println("Log:admin操作開(kāi)始");admin.doSomething();System.out.println("Log:admin操作結(jié)束");} } //4.測(cè)試代碼Admin admin = new Admin();Manager m = new AdminPoly(admin);m.doSomething(); //方式二:繼承式靜態(tài)代理 //與上面的方式僅代理類和測(cè)試代碼不同 //1.代理類 public class AdminProxy extends Admin {@Overridepublic void doSomething() {System.out.println("Log:admin操作開(kāi)始");super.doSomething();System.out.println("Log:admin操作開(kāi)始");} } //2.測(cè)試代碼AdminProxy proxy = new AdminProxy();proxy.doSomething();

    接口用法總結(jié)

    • 通過(guò)接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系。
    • 通過(guò)接口可以指明多個(gè)類需要實(shí)現(xiàn)的方法,一般用于定義對(duì)象的擴(kuò)張功能。
    • 接口主要用來(lái)定義規(guī)范。解除耦合關(guān)系

    接口與抽象類的關(guān)系

    No.區(qū)別點(diǎn)抽象類接口
    1定義包含一個(gè)抽象方法的類抽象方法和全局常量的集合
    2組成構(gòu)造方法、抽象方法、普通方法、常量、變量常量、抽象方法
    3使用子類繼承抽象類(extends)子類實(shí)現(xiàn)接口(implements)
    4關(guān)系抽象類可以實(shí)現(xiàn)多個(gè)接口接口不能繼承抽象類,但允許繼承多個(gè)接口
    5常見(jiàn)設(shè)計(jì)模式模板設(shè)計(jì)工廠設(shè)計(jì)、代理設(shè)計(jì)
    6對(duì)象都通過(guò)對(duì)象的多態(tài)性產(chǎn)生實(shí)例化對(duì)象
    7局限抽象類有單繼承的局限接口沒(méi)有此局限
    8實(shí)際作為一個(gè)模板是作為一個(gè)標(biāo)準(zhǔn)或是表示一種能力
    9選擇如果抽象類和接口都可以使用的話,優(yōu)先使用接口,因?yàn)楸苊鈫卫^承的局限
    10特殊一個(gè)抽象類中可以包含多個(gè)接口,一個(gè)接口中可以包含多個(gè)抽象類

    總結(jié)

    以上是生活随笔為你收集整理的Java 的工厂方法及代理模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。