当前位置: 代码迷 >> .NET分析设计 >> 请问如下场景用什么设计模式
  详细解决方案

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

热度:4520   发布时间:2013-02-25 00:00:00.0
请教如下场景用什么设计模式
1. CPU 种类 1G 2G 3G 
2. 内存 种类 256M 512M 1G
3. 硬盘 种类 500G 1T 2T 


组成一台电脑, 每样选一个,用什么设计模式好呢

------解决方案--------------------------------------------------------
设计模式一般是被用来解决日后的扩展问题,很多模式如工厂等都是为了将扩展的地方抽出来,从而使得日后的改变可以尽量小的改动或甚至不改动代码(所谓的开放-封闭原则)。所以在使用设计模式前,最好能先分析下你的场景中哪些是可能存在的变化点。

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

C# code
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();}
  相关解决方案