1. 程式人生 > >java設計模式之策略模式和簡單工廠模式

java設計模式之策略模式和簡單工廠模式

簡單工廠模式:將物件交由工廠來生成。

策略模式:

主要與演算法有關。

定義了演算法家族,分別封裝起來,讓它們直接可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。

與簡單工廠模式相結合,只要在分析過程中聽到需要在不同的時間應用不同的業務規則,就可以考慮策略模式處理這種問題。

比如下面程式碼為這兩種方式的不同:

簡單工廠模式:

CashSuper csuper = CashFactory.createrCashAccept(cbxType.SelectItem.ToString());
…=csuper.GetResult(…)

策略模式與簡單工廠結合的用法:

CashContext csuper = new CashContext(cbxType.SelectedItem.ToString());
… = csuper.GetResult(…)

簡單工廠模式暴露了CashSuper和CashFactory。而策略模式只暴露了CashContext

策略模式程式碼示例:

public abstract class Strategy {

	/**
	 * 演算法策略
	 * @return 
	 * */
	public abstract void calculate();
}
public class ConcreteStrategyA extends Strategy {

	@Override
	public void calculate() {
		// TODO Auto-generated method stub
		System.out.println("演算法A實現");
	}
}
public class ConcreteStrategyB extends Strategy {

	@Override
	public void calculate() {
		// TODO Auto-generated method stub
		System.out.println("演算法B實現");
	}
}
public class CashContext {

	private Strategy st;
	
	public CashContext(String type) throws Exception{
		switch(type){
		case "策略A":
			st =  new ConcreteStrategyA();
			break;
		case "策略B":
			st =  new ConcreteStrategyB();
			break;
		default:
			throw new Exception("未知的策略");
		}
	}

	public void getResult(){
		st.calculate();
	}
}
public class test {
public static void main(String[] args) throws Exception {
	CashContext cont = new CashContext("策略A");
	cont.getResult();
}
}






相關推薦

設計模式六大原則 以及 簡單工廠模式

      作為一個合格的程式設計師所寫出來的程式是要具有靈活性的,就是寫的程式碼,要維護性高,複用性高,擴充套件性高。通過面向物件的特點(封裝,繼承,多型...)把程式的耦合度降低,使其達到高內聚,低耦合。那麼在有些時候使用適當的設計模式可以使得程式更加的靈活,易於修改,易

java設計模式策略模式簡單工廠模式

簡單工廠模式:將物件交由工廠來生成。 策略模式: 主要與演算法有關。 定義了演算法家族,分別封裝起來,讓它們直接可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。 與簡單工廠模式相結合

設計模式】(一)-簡單工廠模式策略模式

前言 最近開始和春哥,張鐸 ,銀平討論設計模式,成立了一個小菜變大鳥的小組,每天討論一個模式,並且把這個模式搞懂,每學一個新的模式,再回顧一下之前學的模式。這兩天學了簡單工廠模式和策略模式,發現兩個模式有很多相同之處,下面用商場促銷的例子來對兩個模式總結一下。 簡單工廠模式 1.

Java 設計模式(一):簡單工廠模式

參考連結:簡單工廠模式-Simple Factory Pattern 1. 模式概述 定義:定義一個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態方法,因此簡單工廠模式又被稱為靜態工廠方法模式。 簡

策略模式簡單工廠模式的區別

直接上程式碼: 簡單工廠模式: ------------------------------1個抽象類 --------------------------abstract class AbsClass { //抽象方法:提供一些列的演算法操作

易學設計模式看書筆記(2) - 簡單工廠模式

原理 pub -m post 繼承 void cto tracking else if 本文摘自易學設計模式一書 一、簡單工廠模式 1.動物管理系統的樣例 public interface Animal{ public void eat(); } publi

工廠方法模式簡單工廠模式的區別

簡單工廠模式 就我們的計算器例子來說,簡單工廠模式的思想就是,建立一個運算類,建立一個簡單工廠類。 運算類派生加法類、減法類、乘法類...... 簡單工廠類主要是根據傳入的符號字串,做相應的條件判斷來建立相應的運算物件。 當我們需要增加運算功能的時候,需要在運算類中派生相應的運運

設計模式(一)從“簡單工廠模式”升級為“工廠方法模式

工廠模式的引入是為了管理物件的構造,對使用者遮蔽構造過程,使用者只從工廠拿取新物件。 簡單工廠模式 用一個場景介紹簡單工廠模式:某工廠想包攬所有產品生產,不僅提供很多不同型別的產品(iPhone 5,6,7...),還時不時生產新型別的產品(三星S8),而且客戶不關係產品

設計模式禪》-5.抽象工廠模式

抽象工廠模式 定義: 為建立一組相關或相互依賴的物件提供一個介面,而且無需指定它們的具體類 抽象產品類 public abstract class AbstractProductA { //每個產品的共有方法 public void shareMethod () {

設計模式練習(1)——簡單工廠模式

簡單工廠模式 一、題目: 使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入引數M,則返回一個Man物件,如果傳入引數W。則返回一個物件Woman,用java語言實現該場景。現在需要

設計模式】【四】簡單工廠模式

相關文章 1.簡單工廠模式簡介 定義 簡單工廠模式屬於建立型模式又叫做靜態工廠方法模式,是由一個工廠物件決定創建出哪一種產品類的例項。 簡單工廠模式結構圖 Factory:工廠類,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。

C++利用反射簡單工廠模式實現業務模組解耦

1. 業務說明 為了便於說明,舉一個簡單的例子。假設現在有一個專案需要建立一個和銀行互動的平臺,目前只接入工商銀行,後續接入其他銀行,每個銀行的業務都有差異,報文格式可能也不一致。 這裡只列舉幾個簡要的流程,僅包括拼報文,傳送報文,接收報文,解析報文,其餘整體架構以及

java 設計模式01簡單工廠抽象工廠模式

總結一下: 簡單工廠:工廠根據條件去建立對應的具體實現物件,如果需要增加新的物件,就必須修改建立物件的介面,增加判斷條件,另外可能建立的物件下面的方法也可能有其他物件去實現相同的功能,造成混亂,比如,amd可以造cpu,也可以造網絡卡,不能建立了一個amd造cpu的

設計模式策略模式&簡單工廠模式

抽象 jsb args watermark amp pri eas 時間 並且 學習設計模式已經有非常長一段時間了。事實上先前已經敲過一遍了,可是老認為沒有學到什麽,認識也不夠深刻,如今趁著重構機房。再又一次來過,也不晚。 事實上在敲了機房之後,看看模式,事實

java設計模式策略模式總結

客戶端 出場 cnblogs ava java設計 bsp image 需要 com 策略模式的定義:(定義截自http://www.cnblogs.com/whgk/p/6087064.html) 1、策略模式定義了算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓算

Java設計模式策略模式

pattern 管理 父類 interface face 缺點 this err 相互 策略模式屬於對象的行為模式,策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換,策略模式讓算法獨立於使用它的客戶而獨立變化。策略模式使這些算法在客

Java設計模式(一)建立型模式工廠模式簡單工廠模式+工廠方法模式

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說,許多型別物件的建立需要一系列的步驟:你可能需要計算或取得物件的初始位置;選擇生成哪個子物件例項;或在你生成你需要的物件

大話設計模式簡單工廠模式Java版)

大話設計模式——第一章(簡單工廠模式)   題目:請用C++、Java、C#或VB.NET任意一種面嚮物件語言實現一個計算器控制檯程式,要求輸入兩個數和運算子號,得到結果。 import java.io.Console; import java.util.Scanner; /**

設計模式策略模式淺談以及簡單例子

null 引用 == names bsp args cto 封裝 方法 設計模式之策略模式 策略模式定義了算法類,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨立於使用算法的客戶。 策略模式是對算法的包裝,是把使用的責任和

Java 設計模式策略模式

本文為筆者學習《Head First設計模式》的筆記,並加入筆者自己的理解和歸納總結 策略模式定義了演算法族,分別封裝起來,讓它們之間可以相互替代,此模式讓演算法的變化獨立於使用演算法的客戶。 結構圖 交通策略(TrafficStrategy)。 public inte