一个人有金子,银子,铜 3个属性,当人捡到一堆银子,应该给人的银子属性增加。如何实现?
我的设计是 人类,钱类,钱类型枚举,钱类有个方法,返回钱数。 人类有拾取方法,switch钱类型,相应的增加。可是我总觉得这么设计违反开放封闭原则,因为以后如果扩展可拾取的物品(不一定是钱了),都得修改。
求高手给个好的设计方案
我的设计是 人类,钱类,钱类型枚举,钱类有个方法,返回钱数。 人类有拾取方法,switch钱类型,相应的增加。可是我总觉得这么设计违反开放封闭原则,因为以后如果扩展可拾取的物品(不一定是钱了),都得修改。
求高手给个好的设计方案
解决方案 »
- 求帮忙,这个数据怎么求??
- 求助各位高手,一个关于数据库表的二维显示的问,急!
- 呼叫[qldsrx]: MSDN上的一段SOCKET代码, 不知道该如何优化并提高效率 。 朋友们帮忙看看~~~~~
- vb.net自定义控件中如何建立“集合”字段
- 关于"继承"与"多态"的关系,我们到底理解了有多少.
- C#+ACCESS输出EXCEL文件时中文文件名显示为乱码
- 含有数字,/,空格,:,这样的字符串的正则表达式如何写?
- 水晶报表,要疯了
- WINDOWS SERVICE 访问 msmq 的问题
- DataTable如何添加自定义的数据列
- 求帮忙。。。 刚学c#,为什么添加的数据在listbox里面显示不出来
- C#的DataGridView竖排显示的问题。
class Program
{
static void Main(string[] args)
{
Context context; context = new Context(new Money());
context.ContextInterface();
context = new Context(new Food());
context.ContextInterface();
Console.Read();
}
}
//抽象算法类
abstract class Goods
{
//算法方法
public abstract void ByPick();
} //具体算法A
class Money : Goods
{
//算法A实现方法
public override void ByPick()
{
Console.WriteLine("捡到money");
}
}
//具体算法A
class Food : Goods
{
//算法A实现方法
public override void ByPick()
{
Console.WriteLine("捡到food");
}
}
class Context
{
Goods goods; public Context(Goods goods)
{
this.goods = goods;
}
//上下文接口
public void ContextInterface()
{
goods.ByPick();
}
}
see~
http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html