- Android設計模式與最佳實踐
- (英)凱爾·繆
- 1139字
- 2021-02-07 09:26:37
1.5 工廠模式
工廠模式是使用最廣的創(chuàng)建型模式之一。顧名思義,它會創(chuàng)建一些東西。確切地說,它會創(chuàng)建對象。工廠模式的用途是借助通用接口將邏輯與使用分開。要了解工廠模式的工作原理,最好的方式就是實踐。打開我們之前創(chuàng)建的項目,或者新建一個項目。最低SDK版本和目標SDK版本對本練習來說并不重要。
當選擇API 21及以上版本時,Android Studio可以采用熱部署技術。熱部署避免了每次運行項目時都要重新構建項目,這大大加快了應用程序的測試速度。因為熱部署能節(jié)約時間,所以若計劃將目標平臺設置成較低的版本,可以在開發(fā)完成之后再降低版本。
我們將構建一個非常簡單的示例應用程序,用于生成“三明治制作應用程序”所需的對象,這些對象代表不同種類的面包。為了強調模式,我們將保持示例的簡單,對象的返回值不會比字符串復雜。
(1)在項目視圖中找到MainActivity.java文件。
(2)右鍵單擊,新建一個Java類,種類選擇接口(Interface),類名叫Bread,如圖1-3所示。

圖1-3
(3)完成接口:
public interface Bread { String name(); String calories();}
(4)創(chuàng)建Bread的具體類:
public class Baguette implements Bread { @Override public String name() { return "Baguette"; } @Override public String calories() { return " : 65 kcal"; } } public class Roll implements Bread { @Override public String name() { return "Roll"; } @Override public String calories() { return " : 75 kcal"; } } public class Brioche implements Bread { @Override public String name() { return "Brioche"; } @Override public String calories() { return " : 85 kcal"; } }
(5)創(chuàng)建一個新類,取名BreadFactory:
public class BreadFactory { public Bread getBread(String breadType) { if (breadType == "BRI") { return new Brioche(); } else if (breadType == "BAG") { return new Baguette(); } else if (breadType == "ROL") { return new Roll(); } return null; } }
UML圖
理解設計模式的關鍵在于理解它們的結構以及組件之間的關聯。圖形化是查看設計模式的最佳方式之一,統(tǒng)一建模語言(unified modeling language, UML)類圖則是實現圖形化的好方法。
思考一下,我們剛剛創(chuàng)建的設計模式該如何用圖形化的方式表達。圖1-4給出了示例。

圖1-4
設計模式已經準備就緒,接下來要做的就是查看它的實際效果。對于這個示例,我們將在布局中使用模板生成的TextView。每次主活動(MainActivity)啟動時,onCreate()方法都會被調用。
(1)在文本模式下打開activity_main.xml文件。
(2)為文本視圖添加id:
<TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
(3)打開MainActivity.java文件,依照以下代碼編輯onCreate()方法。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = (TextView) findViewById(R.id.text_view); BreadFactory breadFactory = new BreadFactory(); Bread bread = breadFactory.getBread("BAG"); textView.setText(new StringBuilder() .append(bread.name()) .toString()); }
根據Android Studio的設置,可能需要導入TextView小部件:import android. widget.TextView;。通常,編輯器會提示你,按下Alt+Enter快捷鍵即可導入。
現在,可以在模擬器或真機上測試設計模式了,如圖1-5所示。

圖1-5
乍看之下,這可真是小題大做,但也是設計模式的魅力所在。新增的抽象層讓我們無須編輯活動(activity)就能修改類,反之亦然。當需要開發(fā)更復雜的對象以及使用多個工廠時,該特性的實用性將變得更加明顯。
本節(jié)的示例太簡單了,以至于不需要做任何測試。不過,我們不妨來探索如何在真機和模擬器上測試Android應用程序,并學習如何監(jiān)控性能,以及如何通過調試工具,實現不添加額外的屏幕組件即可測試輸出。
- C++ Builder 6.0下OpenGL編程技術
- C語言程序設計實踐教程
- Quarkus實踐指南:構建新一代的Kubernetes原生Java微服務
- Selenium Testing Tools Cookbook(Second Edition)
- Learning Laravel's Eloquent
- 微服務架構深度解析:原理、實踐與進階
- Getting Started with React Native
- ServiceNow:Building Powerful Workflows
- JSP程序設計實例教程(第2版)
- 單片機原理及應用技術
- PhoneGap 4 Mobile Application Development Cookbook
- Python物理建模初學者指南(第2版)
- Applied Deep Learning with Python
- VMware vSphere 5.5 Cookbook
- Bitcoin Essentials