您的位置:首页 > 其它

设计模式学习 之 简单工厂模式

2015-12-28 23:25 405 查看
有幸看到园友推荐的 《大话设计模式》十分感谢,准备练习一下,以免忘记。

设计模式 需要灵活运用,不能为了 设计而设计,这样就得不偿失了。

23种设计模式 分为 三大类型

创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

简单工厂模式 又叫做 静态方法 模式 ,不在 23 种 设计模式之内 。是项目中最简单实用的 模式。它避免了大量的 代码 写在 一起 造成的 项目混乱,实现了简单的分层。

可以使用户只关心 使用 ,传入参数 调用方法。 缺点 是 大量的 业务 逻辑 处理 写在同一个 工厂 内, 当 需求发生 变动时,需要去修改工厂内的方法,这样违反了开放封闭原则。

写个例子:输入 一个数字 ,根据 数字 大小 对它 进行 ,一倍, 两倍 ,3倍 , 加 3 的 操作 ;

前台代码

public  static void Main(string[] args)
{

FactortMethod factory = new FactortMethod();

for (int i = 0; i < 5; i++)
{
int num = Convert.ToInt32(Console.ReadLine());

Operation oper;

oper = factory.Creat(num);

oper.InputNum = num;

Console.WriteLine(oper.OpenSoftWare());

}

}


如果我知道了 调用的功能,可以不用 关心 调用方法是谁写的,怎么实现的,只需 选择 我要使用的 方法 ,赋值

公共操作类

public class  FactortMethod
{

public  Operation  Creat (int  num)
{

if(num < 10)
{

return new FactoryOperationOrigin();

}

else

if(num > 10 && num < 30)
{
return new  FactoryOperationTwo_Times();

}

else
if(num > 30  && num < 60)
{
return new FactoryOperationThere_Times();

}

else

{
return new FactoryOperationAddThere();

}

}
}

}


View Code
遇到的问题: 注意虚方法 父类 使用 virtual 可以让任何派生类 改写 函数 派生类 重写父类方法 要 使用 override
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: