[Design] Kompositionsfrage


  • Administrator

    David W schrieb:

    Bekommst du sobald du das entsprechende Kleid anziehst 😃

    Hmmm ...

    Wollt ihr übrigens noch eine Verkomplizierung des Designs? Die erstellen Räume können einer anderen Liste dazugefügt werden. Wenn sie aus dem Gebäude rausgelöscht werden, sollen sie ebenfalls aus der anderen Liste verschwinden. À la ON DELETE CASCADE 🙂

    Vorschlag:

    public sealed class Room
      : IDisposable
    {
      public event EventHandler Disposed;
    
      public void Dispose()
      {
        var handler = this.Disposed;
    
        if(handler != null)
        {
          handler(this, new EventArgs());
        }
      }
    }
    
    public class RoomCollection
      : IEnumerable<Room>
    {
      private List<Room> m_rooms;
    
      public Room AddNewRoom()
      {
        var room = new Room();
        room.Disposed += this.OnRoomDisposed;
    
        m_rooms.Add(room);
    
        return room;
      }
    
      private void OnRoomDisposed(object sender, EventArgs e)
      {
        var room = (Room)sender;
    
        m_rooms.Remove(room);
    
        room.Disposed -= this.OnRoomDisposed;
      }
    }
    

    ...

    Grüssli



  • Ja, wenn das auch noch dazukommt, dann macht die eigene Collection Sinn 🙂


Anmelden zum Antworten