谨记 设计模式的学习是帮助你设计更好的代码,而不能帮助你更好的体改你的代码写作水平,所以一点要记住:1 多写代码 2 多提炼代码 3 不能硬套模式
就我这两天看的工厂模式来说一说我的理解:
工厂模式顾名思义 就是生产一系列具有相同相同特征 完成特性相同的 实例的一个工厂类;
首先: 一个公共类 :就是这些实例的共有特性的一个类,我将之理解为包含了共有的属性信息 和 一些可供子类override的操作函数;
将每一个实例对象有类来实现,继承公共类,并且将要完成的函数操作重新实现;
一个用户条用程序:可以根据自己的需求条用工厂类来创建相应的实例 。这里应该注意 创建的实例的返回类型是公共类的类型, 在公共类中会根据自己的需求来条用需要的子类来new一个。
工厂模式还需要深入的理解,我是根据《大话设计模式》来学习的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1.logic
{
public class Operation
{
/*简单工厂模式*/
private double _numberA = 0;
private double _numberB = 0;
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double Getresult()
{
double result = 0;
return result;
}
}
class operationAdd : Operation
{
public override double Getresult()
{
double result;
result = NumberA + NumberB;
return result;
}
}
class operationDiv : Operation
{
public override double Getresult()
{
double result;
result = NumberA - NumberB;
return result;
}
}
//扩展的地方 可以在扩展其他类的操作
}
/*************************************************************************************************/
public class operationfactory
{
public static Operation CreatOperation (string opr) //这里返回的类型是父类的类型
{
Operation opreation = null;
switch (opr)
{
case"+":
opreation = new operationAdd();
break;
case "-":
opreation = new operationDiv();
break;
//再要添加运算操作的时候只要增加case操作就可以了。
}
return opreation;
}
/**********************************************************************************************/
class main
{
static void Main()
{
Operation opr;
opr = operationfactory.CreatOperation("+");
opr.NumberA = 1;
opr.NumberB = 2;
double result = opr.Getresult();
Console.WriteLine("the " + result);
Console.ReadLine();
}
}