请教如下场景用什么设计模式

tt5201 2012-05-09 10:15:02
1. CPU 种类 1G 2G 3G
2. 内存 种类 256M 512M 1G
3. 硬盘 种类 500G 1T 2T


组成一台电脑, 每样选一个,用什么设计模式好呢
...全文
184 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuhycherry 2012-06-04
  • 打赏
  • 举报
回复
建造者模式~同样的构建过程,产生不一样的产品
xuqing19830921 2012-05-16
  • 打赏
  • 举报
回复
模式应用于变化的地方,工厂和组合肯定是少不了了,具体其他模式哪里要用到,lz斟酌在功能或者需求变化的地方吧。
wanghui0380 2012-05-15
  • 打赏
  • 举报
回复
额,用啥模式取决与你要防啥变化

都不知道你要防撒,那里来的模式,见鬼的模式。假设你要防止的以后还会有另外的配件加入。那么可能的模式是 组合模式(Composite模式)
MadWork 2012-05-15
  • 打赏
  • 举报
回复
如果非得给的话,建议用组合、装饰、模板。
  • 打赏
  • 举报
回复
停留在雷人的模式和空话,不如直截了当地去说代码。
stg609 2012-05-09
  • 打赏
  • 举报
回复
设计模式一般是被用来解决日后的扩展问题,很多模式如工厂等都是为了将扩展的地方抽出来,从而使得日后的改变可以尽量小的改动或甚至不改动代码(所谓的开放-封闭原则)。所以在使用设计模式前,最好能先分析下你的场景中哪些是可能存在的变化点。

假如变化点是可以向机箱中放入不同的组件,也就是可以动态的扩展机箱的能力,那么可以参考使用装饰者模式(参考Head First中的星巴兹咖啡,http://www.uml.org.cn/sjms/200812292.asp),当然可以结合工厂来创建具体的类:


public abstract class computercomp
{
public string Description{get;set;}
public abstract double cost()
{
return 0;
}
}

public class CPU1 : computercomp
{
computercomp _comp;
public CPU1(computercomp comp)
{
_comp = comp;
}

public override double Cost()
{
return 200 + _comp.Cost();
}
}

public class HD500: computercomp
{
computercomp _comp;
public HD500(computercomp comp)
{
_comp = comp;
}

public override double Cost()
{
return 700 + _comp.Cost();
}
}

public class Memory256: computercomp
{
computercomp _comp;
public Memory256(computercomp comp)
{
_comp = comp;
}

public override double Cost()
{
return 50 + _comp.Cost();
}
}

public class Case: computercomp
{
public override double Cost()
{
return 200;
}
}

//...
public static void main()
{
computercomp comp = new Case();
comp = new Memory256(comp);
comp = new CPU1(comp);
comp = new HD500(comp);

double price = comp.Cost();
}


tt5201 2012-05-09
  • 打赏
  • 举报
回复
这个问题,只是项目中类似场景的举例

我想问的是。用什么设计模式好一点

如; A 工厂模式 B,原型模式 C 抽象工厂模式 D.生成器模式 或其他模式, 怎么选呢。
Lugyedo 2012-05-09
  • 打赏
  • 举报
回复
排列组合,这个设计个算法就行了吧,不用什么设计模式吧,设计模式是对一个项目说的,这么一个小问题谈不上社么设计模式
cheng2005 2012-05-09
  • 打赏
  • 举报
回复
设计模式是用来解决问题的方法,而不是用来套用的。

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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