呵呵,很早前就想动起手来看大话设计模式了,放在电脑里已经很久了,就在这些天终于双击打开它.
目前一路看来,感觉只是些皮毛的,感觉这本书不好,没有什么例子,只是大概讲讲,这样很容易忘,
所以现在弄个贴,就当记记笔记,
呵呵,
1:简单工厂模式.
using System;
using System.Collections.Generic;
using System.Text;namespace Operation
{
/// <summary>
/// 运算类
/// </summary>
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
/// <summary>
/// 数字A
/// </summary>
public double NumberA
{
get
{
return _numberA;
}
set
{
_numberA = value;
}
} /// <summary>
/// 数字B
/// </summary>
public double NumberB
{
get
{
return _numberB;
}
set
{
_numberB = value;
}
} /// <summary>
/// 得到运算结果
/// </summary>
/// <returns></returns>
public virtual double getResult()
{
double result = 0;
return result;
}
} /// <summary>
/// 加法类
/// </summary>
class OperationAdd : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
} /// <summary>
/// 减法类
/// </summary>
class OperationSub : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
} /// <summary>
/// 乘法类
/// </summary>
class OperationMul : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
} /// <summary>
/// 除法类
/// </summary>
class OperationDiv : Operation
{
public override double getResult()
{
double result = 0;
if (NumberB==0)
throw new Exception("除数不能为0。");
result = NumberA / NumberB;
return result;
}
} /// <summary>
/// 平方类
/// </summary>
class OperationSqr : Operation
{
public override double getResult()
{
double result = 0;
result = NumberB * NumberB;
return result;
}
} /// <summary>
/// 平方根类
/// </summary>
class OperationSqrt : Operation
{
public override double getResult()
{
double result = 0;
if (NumberB < 0)
throw new Exception("负数不能开平方根。");
result = Math.Sqrt(NumberB);
return result;
}
} /// <summary>
/// 相反数类
/// </summary>
class OperationReverse : Operation
{
public override double getResult()
{
double result = 0;
result = -NumberB;
return result;
}
} /// <summary>
/// 运算类工厂
/// </summary>
class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
{
oper = new OperationAdd();
break;
}
case "-":
{
oper = new OperationSub();
break;
}
case "*":
{
oper = new OperationMul();
break;
}
case "/":
{
oper = new OperationDiv();
break;
}
case "sqr":
{
oper = new OperationSqr();
break;
}
case "sqrt":
{
oper = new OperationSqrt();
break;
}
case "+/-":
{
oper = new OperationReverse();
break;
}
} return oper;
}
}}2:策略模式,(嘿嘿,代码就不贴了.)3:单一职责模式(一个东西实现一种功能就好,就像一人拥有一个女朋友就好,)
4:开放封闭模式.
5:依赖倒转模式
6:装饰模式(目前在看,无聊中哪.)
以后有时间再看看把笔记贴上来啊,呵呵.
大家要有些什么好的学习方法可以说说,谢谢了
PS:我想找到一个软件开发的工作啊,要是谁有,可以介绍下哦,西西.
目前一路看来,感觉只是些皮毛的,感觉这本书不好,没有什么例子,只是大概讲讲,这样很容易忘,
所以现在弄个贴,就当记记笔记,
呵呵,
1:简单工厂模式.
using System;
using System.Collections.Generic;
using System.Text;namespace Operation
{
/// <summary>
/// 运算类
/// </summary>
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
/// <summary>
/// 数字A
/// </summary>
public double NumberA
{
get
{
return _numberA;
}
set
{
_numberA = value;
}
} /// <summary>
/// 数字B
/// </summary>
public double NumberB
{
get
{
return _numberB;
}
set
{
_numberB = value;
}
} /// <summary>
/// 得到运算结果
/// </summary>
/// <returns></returns>
public virtual double getResult()
{
double result = 0;
return result;
}
} /// <summary>
/// 加法类
/// </summary>
class OperationAdd : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
} /// <summary>
/// 减法类
/// </summary>
class OperationSub : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
} /// <summary>
/// 乘法类
/// </summary>
class OperationMul : Operation
{
public override double getResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
} /// <summary>
/// 除法类
/// </summary>
class OperationDiv : Operation
{
public override double getResult()
{
double result = 0;
if (NumberB==0)
throw new Exception("除数不能为0。");
result = NumberA / NumberB;
return result;
}
} /// <summary>
/// 平方类
/// </summary>
class OperationSqr : Operation
{
public override double getResult()
{
double result = 0;
result = NumberB * NumberB;
return result;
}
} /// <summary>
/// 平方根类
/// </summary>
class OperationSqrt : Operation
{
public override double getResult()
{
double result = 0;
if (NumberB < 0)
throw new Exception("负数不能开平方根。");
result = Math.Sqrt(NumberB);
return result;
}
} /// <summary>
/// 相反数类
/// </summary>
class OperationReverse : Operation
{
public override double getResult()
{
double result = 0;
result = -NumberB;
return result;
}
} /// <summary>
/// 运算类工厂
/// </summary>
class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
{
oper = new OperationAdd();
break;
}
case "-":
{
oper = new OperationSub();
break;
}
case "*":
{
oper = new OperationMul();
break;
}
case "/":
{
oper = new OperationDiv();
break;
}
case "sqr":
{
oper = new OperationSqr();
break;
}
case "sqrt":
{
oper = new OperationSqrt();
break;
}
case "+/-":
{
oper = new OperationReverse();
break;
}
} return oper;
}
}}2:策略模式,(嘿嘿,代码就不贴了.)3:单一职责模式(一个东西实现一种功能就好,就像一人拥有一个女朋友就好,)
4:开放封闭模式.
5:依赖倒转模式
6:装饰模式(目前在看,无聊中哪.)
以后有时间再看看把笔记贴上来啊,呵呵.
大家要有些什么好的学习方法可以说说,谢谢了
PS:我想找到一个软件开发的工作啊,要是谁有,可以介绍下哦,西西.
解决方案 »
- 触发器的用法
- 急,字符串截取问题?
- gdi+ 简单绘图问题
- =谁说无法脱离.NET框架???.NET程序也可以加壳。(散分)
- mediaplayer中如何设置视频循环播放?
- c#调用LogonUser这个API总为False
- 怎样将控件和窗体改变为自己定义的形状!!!
- excel资源的释放--关于怎样重写Dispose方法以释放非托管资源的问题!
- Microsoft Visual Studio 2005打开项目时弹出一个对话框
- 请教:怎么"添加Web引用"后窗口中显示没有可用的引用???
- 当窗体装载的时候就用Label来显示登录用户的信息,可是..?
- c#的listview控件是怎么对某一列排序的?
代理模式的主要用途如WEBSERVIVE,
像远程调用会用到.
不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。
override 方法提供从基类继承的成员的新实现。通过 override 声明重写的方法称为重写基方法。重写的基方法必须与 override 方法具有相同的签名。