Din*_*han 7 oop design-patterns software-design car-analogy
我不确定我是不是疯狂地违反了OOP.
假设有一个Car" 有 "a Engine和a的类Tank.
当Engine它运行时,它会从油中取出油Tank(比如说每单位循环一个单位,虽然油是不可数的)
如何Engine从油中获取油Tank?(当两者都是Car?的领域?)
实际上Engine应该持续"供应"石油而不是"获得"石油.
应该"OilCirculatingSystem"从哪里获得石油Tank
和供应Engine.
如何在课程中对此系统进行建模?
有合适的设计模式吗?
***编辑:简单地说,如何有一个从"油流" Tank来Engine?(是不是Oil有责任从流量Tank到Engine一个阀门打开时?
如果它烧坏了大脑,我很抱歉。缺少方法的实现,但我希望你能明白我的想法。
class Tank
{
Oil oil;
public Tank(OilPipe pipe)
{
pipe.OilNeeded += new EventHandler<OilNeededEventArgs>(pipe_OilNeeded);
}
public void FillOil(Oil oil) { }
void pipe_OilNeeded(object sender, OilNeededEventArgs e)
{
e.Oil = oil.SubtractLiters(5);
}
}
class OilPipe
{
public event EventHandler<OilNeededEventArgs> OilNeeded;
public Oil SuckOil();
}
class Piston
{
public void Move() { }
}
class Oil
{
public Energy Burn() { }
}
class Energy
{
public void Push(Piston piston) { }
}
class Engine
{
OilPipe oilPipe;
public Engine(OilPipe oilPipe, Piston piston)
{
this.oilPipe = oilPipe;
}
public void MovePiston()
{
Oil oil = oilPipe.SuckOil();
Energy energy = Burn(oil);
energy.Push(piston);
}
}
class Car
{
Engine engine;
public Car(Engine engine, Tank tank)
{
}
public void Accelerate()
{
engine.MovePiston();
}
}
Run Code Online (Sandbox Code Playgroud)