2016-05-17 14 views
0

Каждый лифт имеет набор состояний.Конструкция класса с использованием принципа SOLID с использованием C#

• Техническое обслуживание: лифт не реагирует на внешние сигналы (только для собственных сигналов).

• Стенд: лифт закреплен на полу. Если он получает вызов. И лифт на том этаже, двери открыты. Если он находится на другом этаже, он движется в этом направлении.

• Вверх: лифт поднимается вверх. Каждый раз, когда он достигает пола, он проверяет, нужно ли останавливаться. Если это так, он останавливается и открывает двери. Он ждет определенное количество времени и закрывает дверь (если только что-то не проходит через них, а затем удаляет пол из списка запросов и проверяет, есть ли другой запрос. Если тогда лифт снова начинает двигаться, если он не входит в состояние стенд

• вниз:. нравится вверх, но в обратном направлении

ПРИМЕЧАНИЕ: Некоторые лифты не начинаются в нижней части/first_floor Esp в случае неба скреперов min_floor & max_floor две дополнительные атрибуты для лифта...

Мой демо-дизайн:

public abstract class Elevator 
{ 
    protected bool[] floorReady; 
    protected int CurrentFloor = 1; 
    protected int topfloor; 
    protected ElevatorStatus Status = ElevatorStatus.STOPPED; //ElevatorStatus is enum 

    protected virtual void Stop(int floor){} 
    protected virtual void Descend(int floor) {} 
    protected virtual void Ascend(int floor) {} 
    protected virtual void StayPut() {} 
    protected virtual void FloorPress (int floor){} 

} 

interface ILogger 
{ 
    void RegisterLog(string Message) 
} 

public FileLogger : ILogger 
{ 
    void RegisterLog(string Message) 
    { 
     //Custom Code 
    } 
} 
public class MyElevator : Elevator 
{ 
    // All method overrride for base 
} 

//Client class 
class program 
{ 
    public static void main() 
    { 
    //DI for calling Looging 

    } 
} 

Может кто-нибудь мне помочь разработать свои классы, которые удовлетворяют всем SOLID принцип ..

Спасибо заранее ... Я хочу разработать Лифт Simulator с использованием SOLID принципы.

+1

Добро пожаловать! Извините, нас здесь нет, чтобы написать код для вас. Почему бы не сделать себе чашку чая? читать SOLID; выполнить некоторые эксперименты и посмотреть, как это происходит. Если вы столкнулись с конкретной проблемой, вернитесь сюда и опубликуйте об этом. Желаю вам здоровья! :) – MickyD

+0

Позвольте мне загрузить мою попытку в GitHub и поделиться ссылкой здесь ... Это звучит хорошо? –

+0

Замечательно, что у вас есть код для показа. Можете ли вы просто разместить минимальную сумму здесь, [редактируя] (http://stackoverflow.com/posts/37266529/edit) свой вопрос? Peeps вообще не будут смотреть на чужие сайты или код, который слишком длинный. Спасибо, приятель – MickyD

ответ

0

Посмотрите на state pattern.

С его помощью вы переводите бизнес-правила перемещения лифта в каждое конкретное состояние. Поэтому вместо использования Enum вы позволяете каждому состоянию определять, что делать дальше (например, какое состояние использовать для следующего действия).

Он также позволяет добавлять новые функции (путем добавления большего количества состояний) без изменения класса лифта (что важно с точки зрения SOLID).