Код IT Загрузка примера кода…

Java main.java
// Интерфейс двигателя
interface Engine {
    void start();
    void stop();
}

// Конкретная реализация: бензиновый двигатель
class GasEngine implements Engine {
    @Override
    public void start() {
        System.out.println("Запуск бензинового двигателя");
    }

    @Override
    public void stop() {
        System.out.println("Остановка бензинового двигателя");
    }
}

// Конкретная реализация: электродвигатель
class ElectricEngine implements Engine {
    @Override
    public void start() {
        System.out.println("Запуск электродвигателя");
    }

    @Override
    public void stop() {
        System.out.println("Остановка электродвигателя");
    }
}

// Автомобиль "имеет" двигатель — композиция
class Car {
    private Engine engine;

    // Двигатель передаётся при создании — гибкость!
    public Car(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }

    public void stop() {
        engine.stop();
    }

    // Возможность заменить двигатель во время выполнения
    public void setEngine(Engine engine) {
        this.engine = engine;
    }
}
// Интерфейс двигателя
interface Engine {
    void start();
    void stop();
}

// Конкретная реализация: бензиновый двигатель
class GasEngine implements Engine {
    @Override
    public void start() {
        System.out.println("Запуск бензинового двигателя");
    }

    @Override
    public void stop() {
        System.out.println("Остановка бензинового двигателя");
    }
}

// Конкретная реализация: электродвигатель
class ElectricEngine implements Engine {
    @Override
    public void start() {
        System.out.println("Запуск электродвигателя");
    }

    @Override
    public void stop() {
        System.out.println("Остановка электродвигателя");
    }
}

// Автомобиль "имеет" двигатель — композиция
class Car {
    private Engine engine;

    // Двигатель передаётся при создании — гибкость!
    public Car(Engine engine) {
        this.engine = engine;
    }

    public void start() {
        engine.start();
    }

    public void stop() {
        engine.stop();
    }

    // Возможность заменить двигатель во время выполнения
    public void setEngine(Engine engine) {
        this.engine = engine;
    }
}