設計模式 簡單工廠模式

2021-07-06 10:01:03 字數 1796 閱讀 6275

2023年7月,去了tx實習,不說學習了很多,倒是看到了很多,實習回來決定好好學一下設計模式,看了一本很不錯的書《大話設計模式》,我一直在研究,真心推薦,現在寫一寫自己的總結,認真對待。

我們初學者,雖然聽了很多物件導向的東西,也寫了很多物件導向的**,卻發現自己很難有物件導向的思想,一上來還都是面向過程的東西,就比如《大話設計模式》中的第一章所說的「**無錯就是優?」,我學到現在才發現真的不是,真正的好**是容易擴充套件的、維護的,要做到這兩點,設計出來的程式就應該是低耦合,高內聚,靈活,遵循一定的設計模式、原則,程式設計是一門藝術,更是一種享受,自己缺乏的太多了!好了,不bb了,寫總結。

就如《大話》裡的第一章,寫乙個最簡單的計算機的控制台程式,我腦子一上來就是在main函式裡定義兩個數、輸入、計算、輸出,這就是很典型的面向過程,如果把程式移植到web端,又會發生會什麼!!! 一點都復用不上,重寫!

一開始的**:

public static void main(string args) 

system.out.println(result);

scanner.close();

}

先分析不好在那裡:

1.把計算邏輯和展示介面混合在一起了,耦合高

2.把計算邏輯中的加減乘除混合在一樂,耦合高

如何改進?

1.分離計算邏輯和介面

2.抽象出來乙個計算類的父類,每個計算類繼承與它

3.用簡單工廠模式來生產計算物件

4.用反射來替換判斷語句

上碼:計算類的父類:

public abstract class operator 

protected void setnumb(double numb)

}

計算類的子類:

public class addoperator extends operator 

}

public class divoperator extends operator 

return numa / numb;}}

public class multioperator extends operator 

}

public class suboperator extends operator 

}

簡單工廠類:

public class operato***ctory 

public static operato***ctory getinstance()

return instance;

}// 去例項化物件的問題

public operator createoperator(string op) catch (exception e)

return operator;}}

現在就做到:

1.邏輯與介面分離,邏輯都是通用的,可移植——封裝,運算邏輯可以復用

2.容易擴充套件,比如加乙個開方的運算,只需要加乙個開方類,並不涉及到別的類——松耦合,各個運算互不影響

還有一點,文字表述太不直觀了,最好用uml,一定補上!

(astah畫的,免費簡單)

perfect,建議大家一定要讀《大話設計模式》

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...

設計模式(簡單工廠模式 工廠模式 抽象工廠模式)

當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...

設計模式 簡單工廠設計模式

請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...