OOP设计:汽车 - 油箱和发动机之间的连接

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.
如何在课程中对此系统进行建模?
有合适的设计模式吗? 在此输入图像描述

***编辑:简单地说,如何有一个从"油流" TankEngine?(是不是Oil有责任从流量TankEngine一个阀门打开时?

Muh*_*han 4

如果它烧坏了大脑,我很抱歉。缺少方法的实现,但我希望你能明白我的想法。

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)