策略模式和工厂模式有啥区别

sorry_rr 2010-09-27 11:39:58
上网找了些资料还是看的很糊涂,
求高手~~
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
风尘浪子 2010-09-27
  • 打赏
  • 举报
回复
工厂模式目的只是用于创建对象,但简单的工厂模式始终对子类有存在依赖,你每建立一个子类,则必须对Factory进行修改。
class Factory
{
public Farther Create(int n)
{
swith(n)
{
case 0:
return new Child1();
.........
}
}
}

而策略模式所关注是其行为,当你调用不同的子类,则会实现不同的效果。Strategy只是承担“中介者”的角色,strategy的行为将委托于子类来实现。但Strategy没有违反DIP原则,对子类不存在依赖,只是开发时需要多建一个类。
class Strategy
{
private Father class;

public void SetData(Father child)
{
class=child;
}

public void Method()
{
//利用不同child实现不同效果
...........
}
}

class Father{.........}
class Child:Father{........}

QQ群:59557329 .NET技术开发联盟
希望大家可以踊跃参加,积极讨论
[img=http://cgi.qun.qq.com/gscgi/s1/gp.do?gid=59557329]点击这里加入此群[/img]
llf94632525 2010-09-27
  • 打赏
  • 举报
回复
工厂是生成对象的,策略不是……
sorry_rr 2010-09-27
  • 打赏
  • 举报
回复
这本书网上有电子版的吗?
q107770540 2010-09-27
  • 打赏
  • 举报
回复
看看《大话设计模式》
第一章讲的是工厂模式
第二章就是策略
并对二者作了对比
wuyq11 2010-09-27
  • 打赏
  • 举报
回复
结构类似,但作用不同
工厂模式用来创建对象。
策略模式可以表示可替换的算法等。更多的是依赖倒置

110,555

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧