現在,以乙個有幾年開發經驗的我來開始記錄大話設計模式中所涉及的各種設計模式,權當學習過程中的乙個記錄,順便提公升自己的能力!感謝給我提供了乙個記錄筆記的乙個平台
加入現在領導要給我乙個任務,開發乙個計算器的任務,因為我之前看過一部分《大話設計模式》因此直接使用裡邊的思想。
開發程式之前,不能僅僅是為了這乙個專案,而是要考慮到後期開發過程和**的復用,因此需要用到物件導向中的封裝這一特性。
每乙個專案中都有相同的地方,將相同地方或操作提取出來之後建立若干個類來繼承為物件導向的抽象特徵。
多型:同乙個方法不同的表現形式,比如構造方法。
正文開始-------
作為一名程式設計師,必要的總結是不可以缺少的。計畫從現在開始到明年年底將《大話設計模式》這本書中所列舉的設計模式都紀錄一遍用於以後工作的提公升!
簡單工廠之計算器
寫這個功能之前,我需要整理一下寫**的基本思路:寫程式必須要以能復用,易於維護為原則,一定要使用物件導向的三大特徵 封裝繼承和多型。引用《大話設計模式》中的乙個例子 在活字印刷出來之前,印刷的模板都是一次性使用的,因此一本書的成本太高,這樣大規模使用是很難實現的。如果放到當今這個以流量為王的時代絕對會被淘汰。 **
public class operation
private double _numba = 0;
private double _numbb = 0;
public double _numba
getreturn _numba;
set_numba = value;
public double _numbb
getreturn _numbb;
set_numbb = value;
public virtual double getresult()
double result = 0;
return result;
//上邊是抽象出來其他運算類需要繼承的父類。
//下邊寫具體實現
//加法類
public class operationadd : operation
public override double getresult()
double result = 0;
result = _numba + _numbb;
return result;
//減法類
public class operationsub : operation
public override double getresult()
double result = 0;
result = _numba - _numbb;
return result;
//乘法類
public class operationmulti : operation
public override double getresult()
double result = 0;
result = _numba * _numbb;
return result;
//除法類
public class operationdivde : operation
public override double getresult()
double result = 0;
if (_numbb == 0)
throw new exception("除數不能為零!!");
result = _numba / _numbb;
return result;
//後台類已經寫好了,前台控制台程式也好,webform程式也好都可以使用。[我是以asp.net]( webform配合ajax來實現的。 //前台資料通過ajax傳遞到後台一般處理性程式(ashx)檔案,資料處理後將資料傳遞到前台。 //在這裡需要新增乙個ashx類的父類,通過反射的方式簡化呼叫程式。
[中**](
//建立呼叫類,呼叫類中的**
var expression = context.request["expression"];//這裡是將使用者的表示式獲取過來
var operateflag = context.request["operateflag"].tochararray();
var exprearry = expression.split(operateflag);//然後通過使用者輸入的運算子來分割
operation operate = null;
switch (operateflag[0])
case '+':
operate = new operationadd();
break;
case '-':
operate = new operationsub();
break;
case '*':
operate = new operationmulti();
break;
case '/':
operate = new operationdivde();
break;
operate._numba = convert.todouble(exprearry[0]);//不論是加減乘除都可以使用同一種方式來呼叫
operate._numbb = convert.todouble(exprearry[1]);
var result = operate.getresult();
context.response.write(result);
context.response.end();
//後台呼叫完畢,下邊開始寫前台呼叫方式。首先需要引用jquery檔案,然後就可以使用jquery中的方法了。在這裡不展示引用(太簡單)
//前台html布局 使用的是table布局
//僅僅實現了+-*/最基本的演算法,因此沒有涉及到的按鈕id名稱就沒修改
//以下是css樣式設定
//執行圖仿照win7中計算器樣式
//最後新增jquery**
大話設計模式之簡單工廠模式
簡單工廠模式,也就是說,到底要例項化誰,將來會不會增加例項化的物件,比如計算器程式中增加開根運算,這是很容易變化的地方,應該考慮用乙個單獨的類來做創造例項的過程,這就是工廠,具體 如下 public class operationfaction public static operation cre...
大話設計模式之簡單工廠模式
最近朋友推薦了一本書 大話設計模式 此書剛剛到,博主也還沒開始看,希望以博文的方式與大家一起分享,一起學習.簡單工廠模式,也就是說,到底要實列化誰,將來會不會增加實列化的物件,比如增加開根運算,這是很容易實列化的地方應該考慮用乙個單獨的類來做這個創造實列的過程,這就是工廠,來我們一起看看這個類如何寫...
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...