《第一行程式碼Java》介面實現工廠模式學習筆記與程式碼
. 良好的程式設計風格:
客戶端(該例項為主方法)呼叫簡單,不需要關注細節,
.程式修改程式碼,不影響,不影響客戶端呼叫,即使用者不用擔心程式碼變更,因為一個介面可能有多個子類
package org.java.factory; /** * * 該程式是未採用工廠模式,用來對比工廠模式 * @author coder *因為一個介面可能有多個子類,如果我們在程式上多實現了很多介面,那麼我們是需要在 *main方法中(客戶端)也相應的需要去new相應介面物件的例項,就會修改客戶端程式碼 *而採用工廠模式則不會,客戶端不會去關注子類,也不需要關注factory的處理,只需要 *如何取得物件的介面並操作(詳情看下例) */ interface Fruit{ public void eat(); } class Apple implements Fruit{ public void eat() { System.out.println("***吃蘋果"); } } class Orange implements Fruit{ @Override public void eat() { // TODO Auto-generated method stub System.out.println("*****吃橘子"); } } public class CommonTest { public static void main(String[] args) { // TODO Auto-generated method stub Fruit apple=new Apple(); apple.eat(); Fruit orange=new Orange(); orange.eat(); } } /* ***吃蘋果 *****吃橘子*/
package org.java.factory; interface Fruit2{ public void eat(); } class Apple2 implements Fruit{ public void eat() { System.out.println("***吃蘋果"); } } class Orange2 implements Fruit{ @Override public void eat() { // TODO Auto-generated method stub System.out.println("*****吃橘子"); } } class Factory{ /** * * 工廠類用於取得指定型別的介面 */ public static Fruit getInstance(String className){ if("apple2".equals(className)){ return new Apple(); }else if("orange2".equals(className)){ return new Orange(); }else{ return null; } } } public class FactoryTest { public static void main(String[] args) { // TODO Auto-generated method stub Fruit fruit=Factory.getInstance("apple2"); fruit.eat(); } }
相關推薦
《第一行程式碼Java》介面實現工廠模式學習筆記與程式碼
. 良好的程式設計風格: 客戶端(該例項為主方法)呼叫簡單,不需要關注細節, .程式修改程式碼,不影響,不影響客戶端呼叫,即使用者不用擔心程式碼變更,因為一個介面可能有多個子類 package org.java.factory; /** * * 該程
一個體現Java介面及工廠模式優點的例子
本例子以操作不同型別的資料庫為例: 簡要說明: OracleDataOperate、SqlserverDataOperate、MysqlDataOperate,分別代表Oracle、Sqlserver、Mysql這三種資料庫的操作類。繼承自AbstractDataOpera
《第一行程式碼Java》陣列與String部分學習筆記與程式碼
.堆記憶體:儲存物件真正的資料,就是每一個物件的屬性內容如cat物件的顏色color,age屬性的具體數值; .棧記憶體:儲存的是一塊堆記憶體的空間地址,簡易理解為物件的名稱如Cat cat中的cat(物件名稱); 聯絡與區別:一塊堆記憶體可以被多個棧記憶體所指
一個體現Java介面及工廠模式優點的例子(經典)
一個體現Java介面及工廠模式優點的例子(轉載自http://www.jspcool.com/j2se/20071019225405.htm) 隨著模式概念的普及,瞭解模式和使用模式的程式設計師越來越多,很多人在學習模式的時候,都會有這樣一種疑惑:“有必要搞得這麼複雜嗎?”。
簡單工廠模式 - 學習筆記
我想 ase 幫助 rto .class 分支 value sqlserve catch 工廠模式主要是為創建對象提供過渡接口,以便將創建對象的具體過程屏蔽隔離起來,達到提高靈活性的目的。 工廠模式可以分為三類: 簡單工廠模式(Simple Factory) 工廠方法模
工廠模式學習筆記
private cto 實現類 廠商 @override 人類 rec 工業 ava 人類工業進化史 與 java設計模式 石器時代: new Object(); 小作坊模式: 簡單工廠模式 小工廠: 工廠方法模式 流水線大廠: 抽象工廠模式 簡單工廠 註: 下面都會
【自用】java多執行緒程式設計學習筆記(程式碼片段來源於網路)
執行緒的基本概念 執行緒是在邏輯上等同於作業系統中說的程序,是程序的細分。比如我們使用同一個軟體同時對電腦進行體檢和防毒的時候,我們就是開啟了那個軟體的程序的兩個執行緒,在邏輯上這兩個執行緒是同時被cpu執行的。 執行緒的生命週期 執行緒的生命週期分為建立,就緒,執行,
Java實現SSH模式加密原理及程式碼
一、SSH加密原理 SSH是先通過非對稱加密告訴服務端一個對稱加密口令,然後進行驗證使用者名稱和密碼的時候,使用雙方已經知道的加密口令進行加密和解密,見下圖: 解釋:SSH中為什麼要使用非對稱加密,又使用對稱加密,到底有什麼用處?到底安全不安全?既然後來又使用了對稱加密,開始的時候為什麼還要用非對稱加密?
Java反射結合屬性檔案實現工廠模式
通過屬性檔案的形式配置所需要的子類 首先建立一個fruit.properties的資原始檔 內容為: apple=Reflect.Apple orange=Reflect.Orange然後編寫主類程式
java 之 抽象工廠模式(大話設計模式)
out 簡單 ges 關系 logs 只需要 切換 ima .get 看了幾次抽象工廠模式,每次查看都需要重新理解一次,可能是涉及的類和接口比較多,所以比較難縷清的關系吧!在筆者看來,我們還是要吸取其思想而不是生搬硬套。 來看下類圖: 大話設計模式-類圖 看類圖已經很亂了
Java中的工廠模式
ride 依賴倒轉原則 spa 接口隔離 負責 展開 具體實現 sta 開放 設計模式遵循原則 開閉原則:對擴展開放,對修改關閉 裏氏代換原則:只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被覆用。而衍生類也能夠在基類的基礎上增加新的行為 依賴倒轉原
《大話設計模式》c++實現 工廠模式
imap 倍增 pause 遠程服務器 只需要 記錄器 事件 pau 完成 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會對客戶
Python實現工廠模式
作者:黎智煊,叩丁狼高階講師。本文為原創文章,轉載請註明出處。 首先,什麼是工廠模式? 工廠模式是一個在軟體開發中用來建立物件的設計模式。 工廠模式包涵一個超類。這個超類提供一個抽象化的介面來建立一個特定型別的物件,而不是
Java常用的八種排序演算法與程式碼實現(三):桶排序、計數排序、基數排序
三種線性排序演算法:桶排序、計數排序、基數排序 線性排序演算法(Linear Sort):這些排序演算法的時間複雜度是線性的O(n),是非比較的排序演算法 桶排序(Bucket Sort) 將要排序的資料分到幾個有序的桶裡,每個桶裡的資料再單獨進行排序,桶內排完序之後,再把桶裡的
Java常用的八種排序演算法與程式碼實現(二):歸併排序法、快速排序法
注:這裡給出的程式碼方案都是通過遞迴完成的 --- 歸併排序(Merge Sort): 分而治之,遞迴實現 如果需要排序一個數組,我們先把陣列從中間分成前後兩部分,然後對前後兩部分進行分別排序,再將排好序的數組合並在一起,這樣整個陣列就有序了 歸併排序是穩定的排序演算法,時間
簡單的反射實現工廠模式
//第一步:宣告一個介面,用於其它類實現 public interface Fruit { public void eat(); } //第二步:宣告你需要的類,該類去實現上介面,這裡我就聲明瞭兩個 public class Apple implements Fruit{ @overri
有點簡單工廠模式感覺的go程式碼
看程式碼: package main import ( "fmt" ) // task process 基礎層 type TaskIntf interface { Process() } type TaskProc struct { TaskName
Java常用的八種排序演算法與程式碼實現(一):氣泡排序法、插入排序法、選擇排序法
這三種排序演算法適合小規模資料排序 --- 共同點:基於比較,時間複雜度均為O(n2),空間複雜度均為O(1)(原地排序演算法) 不同點:插入排序和氣泡排序是穩定的排序演算法,選擇排序不是 --- 穩定排序演算法:可以保持數值相等的兩個物件,在排序之
java 介面實現壓縮後的生成多張二維碼
pom的jar包: <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version&
Java單例設計模式的理解與常規實現方式
1:Java中單例模式是一種常見的設計模式,單例模式有以下特點: 單例類只能有一個例項。 單例類必須自己建立自己的唯一例項。 單例類必須給所有其他物件提供這一例項。 單例模式確保某個類只有一個例項