Java 的工厂方法及代理模式
生活随笔
收集整理的這篇文章主要介紹了
Java 的工厂方法及代理模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java 的工廠方法及代理模式
工廠方法(FactoryMethod)
概述:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。FactoryMethod使一個類的實例化延遲到其子類。
適用性:
示例可參考:http://blog.csdn.net/jason0539/article/details/23020989
總結(jié):
FactoryMethod模式是設(shè)計模式中應(yīng)用最為廣泛的模式,在面向?qū)ο蟮木幊讨?#xff0c;對象的創(chuàng)建工作非常簡單,對象的創(chuàng)建時機卻很重要。FactoryMethod解決的就是這個問題,它通過面向?qū)ο蟮氖址?#xff0c;將所要創(chuàng)建的具體對象的創(chuàng)建工作延遲到了子類,從而提供了一種擴展的策略,較好的解決了這種緊耦合的關(guān)系。
代理模式(Proxy)
概述:為其他對象提供一種代理以控制對這個對象的訪問
示例:引用自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.真實主題類 public class Admin implements Manager {public void doSomething() {System.out.println("Admin do something.");} } //3.以聚合方式實現(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操作開始");admin.doSomething();System.out.println("Log:admin操作結(jié)束");} } //4.測試代碼Admin admin = new Admin();Manager m = new AdminPoly(admin);m.doSomething(); //方式二:繼承式靜態(tài)代理 //與上面的方式僅代理類和測試代碼不同 //1.代理類 public class AdminProxy extends Admin {@Overridepublic void doSomething() {System.out.println("Log:admin操作開始");super.doSomething();System.out.println("Log:admin操作開始");} } //2.測試代碼AdminProxy proxy = new AdminProxy();proxy.doSomething();接口用法總結(jié)
- 通過接口可以實現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系。
- 通過接口可以指明多個類需要實現(xiàn)的方法,一般用于定義對象的擴張功能。
- 接口主要用來定義規(guī)范。解除耦合關(guān)系
接口與抽象類的關(guān)系
| 1 | 定義 | 包含一個抽象方法的類 | 抽象方法和全局常量的集合 |
| 2 | 組成 | 構(gòu)造方法、抽象方法、普通方法、常量、變量 | 常量、抽象方法 |
| 3 | 使用 | 子類繼承抽象類(extends) | 子類實現(xiàn)接口(implements) |
| 4 | 關(guān)系 | 抽象類可以實現(xiàn)多個接口 | 接口不能繼承抽象類,但允許繼承多個接口 |
| 5 | 常見設(shè)計模式 | 模板設(shè)計 | 工廠設(shè)計、代理設(shè)計 |
| 6 | 對象 | 都通過對象的多態(tài)性產(chǎn)生實例化對象 | |
| 7 | 局限 | 抽象類有單繼承的局限 | 接口沒有此局限 |
| 8 | 實際 | 作為一個模板 | 是作為一個標準或是表示一種能力 |
| 9 | 選擇 | 如果抽象類和接口都可以使用的話,優(yōu)先使用接口,因為避免單繼承的局限 | |
| 10 | 特殊 | 一個抽象類中可以包含多個接口,一個接口中可以包含多個抽象類 |
總結(jié)
以上是生活随笔為你收集整理的Java 的工厂方法及代理模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国内大公司的开源项目一览表
- 下一篇: Java 的内部类