1. 程式人生 > >《第一行程式碼Java》介面實現工廠模式學習筆記與程式碼

《第一行程式碼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中單例模式是一種常見的設計模式,單例模式有以下特點:       單例類只能有一個例項。       單例類必須自己建立自己的唯一例項。 單例類必須給所有其他物件提供這一例項。   單例模式確保某個類只有一個例項