首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用原型模式

是否使用原型模式
EN

Stack Overflow用户
提问于 2011-10-28 14:39:14
回答 2查看 510关注 0票数 3

我有个问题。我需要创建一个与产品做的小事情。现在我可以有7种不同类型的产品。有些是另一些的子类型,例如

代码语言:javascript
复制
Cars
 - Vans
   - petrol
   - diesel
 - City
 - Hatchback
 - Saloon
 - Estate
   - petrol
   - diesel

现在,为了争论所有我的城市,掀背和轿车是混合动力/汽油/任何东西,我不打算销售汽油和柴油车。然而,在未来的某个时候,我可能会有汽油和柴油轿车,但我不会有20+类型的产品。如果它要上升,我可能会有2-3个类型。

据我所知,Prototype Pattern在这里可能是一个很好的选择,因为我将能够避免房产->汽油和货车->汽油之间的重复。但话又说回来,面包车将具有不同于城市汽车的特性,例如最大装载尺寸。

我一直在广泛地阅读有关设计模式的文章,有一件事我记得很清楚,那就是在你不需要模式的时候不要使用它。现在的问题是--我需要它吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-28 15:34:33

Decorator模式可能是最直接使用的模式,它可以很好地扩展具体对象、功能和/或特征。

这里有一些简单的阅读:Head First Design Patterns - CH3 pdf

仅供参考,无论您选择哪种语言,夫妇都必须具备学习和参考设计模式的能力:

1) Head First Design Patterns

2) Patterns for Enterprise Application Architecture

3) Design Patterns: Elements of Reusable Object-Oriented Software

和站点:

1) DoFactory

2) StackOverflow Design Patterns Newbie

还有其他几个,我得把它们找出来。

票数 1
EN

Stack Overflow用户

发布于 2011-10-28 15:48:47

每种类型的汽车都需要不同的行为吗?汽油面包车和柴油面包车的行为不同?一个酒馆必须表现得和一个庄园不同?

如果我没理解错的话,你需要这样的东西

代码语言:javascript
复制
public enum FuelType
{
     Petrol,
     Diesel
}

public class Car
{
   public string Name {get;set;}
   public FuelType Fuel {get;set;}
}

public class Van:Car { } 
public class CityCar:Car { }

如果货车的特征只是与汽车不同的值,你不需要子类化,你只需要改变一个属性值。例如,一个Van应该有其他属性或方法的不同实现,才有资格进行子类化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7925943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档