Проектирование системы с использованием упс - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть класс для машины.

public class Machine {



}

Ответы [ 3 ]

1 голос
/ 08 апреля 2019

Взгляните на Интерфейсы .

Основная идея: вы должны заключить договор между вашей Машиной и двигателем, который она может использовать.Какой бы двигатель вы ни подключали к своей Машине, он должен обеспечивать известные методы, чтобы Машина могла управлять им.

Пример интерфейса, который вы можете использовать:

public interface Engine {

    public void start();

    public void stop();

    public void fill(FuelType fuelType, int fuelLevel);

    public FuelType getFuelType();

}

Теперь каждый двигатель долженреализовать этот интерфейс:

public class InternalCombustionEngine implements Engine {
        public void start() {
             //implementation
        }

        public void stop() {
            //implementation
        }

        public void fill(FuelType fuelType, int fuelLevel) {
            //implementation
        }

        public FuelType getFuelType() {
            //implementation
        }
}

И наконец, чтобы иметь возможность использовать Engine, вам лучше предоставить конструктор для Machine класса, принимающего любой объект, который реализуетEngine интерфейс:

public class Machine {

     public Machine(Engine engine) {    
         this.engine = engine;
     }

     //.......

}

Этот подход дает вам гибкий и масштабируемый способ замены двигателя или машины независимо друг от друга.И обеспечить хорошую возможность разработки каждого компонента в отдельности.

1 голос
/ 08 апреля 2019

Создание интерфейса, называемого что-то вроде «Engine», с методами start (), stop (), isRunning (), fill (...) и getFuelType (), а затем наличие в SteamEngine и InternalComburationEngine реализации этого интерфейса, скорее всеголучший подход.

0 голосов
/ 08 апреля 2019

Вы можете сделать это двумя способами.

Реализация interface, который в основном является классом, который содержит только абстрактные методы и статические или конечные переменные.Вы можете реализовать это в своих классах с ключевым словом implements.

Другой способ - использовать абстрактный класс.Он может содержать абстрактные и неабстрактные методы, финальные, не финальные, статические и нестатические переменные.Вы можете реализовать это с ключевым словом extends.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...