Så er jeg på den igen!
Nu har jeg kodet hele basen i mit nye system op med interfaces, og jeg må sige at jeg
elsker det! Jeg kan godt se idéen i at lave struktur uden at kode det bagvedliggende system. Og jeg har da også anvendt at spotte gennem en interface definition, i stedet for at læse gennem selve class filen, når jeg lige skal finde et eller andet.
Men nu begynder jeg at nærme mig "kontrol laget" i mit system. Jeg har bygget lidt fra hist og her, nok aller mest for at få styr på de interfaces, og nogle ande gode vaner jeg er ved at arbejde ind på rygraden.
Jeg tænkte på følgende: Hvordan skal jeg "forbinde" alle lagene?
Jeg er nød til at have noget logik. Fx som "Hvert minut, tjek om solnedgang, hvis solnedgang, rul persienner for" eller "hvis RFID tag modtaget, tjek mod database, hvis bruger findes og korrekt sikkerhedsniveau, lås dør op"
De to "simple" opgaver her kræver henholdsvis adgang til DMI, brug af en timer, adgang til hardwareinterfacet, og faktisk også adgang til databasen (for at game persienne state).
Det andet eksempel kræver adgang til hardware, database, talesyntese (velkomstbesked) og netværk (notificere touchskærm om adgang da den sidde lige ved siden af, og det er SÅ Sexy når den selv tænder!
)
I det eksempel jeg fik her inde fra (kan ikke helt huske hvem af jer der gav mig det) der har hvert interface en "Notify" event som lader deres "parent class" Eller hvad man nu kalder det, koble sig til deres event og så får parenten besked om alt hvad der sker i class'en.
Jeg tænkte, er det den bedste måde at gøre det på? Have en fælles INotifyEvent med et INotifyObject som så kan køres op til mit logiclayer?
Eller hvordan vil i ligge det ud?
For lidt flere detaljer.
Fx kan IHardwareManager have "DoorOpen" "DoorClosed" "RFIDScanned" eventsne
og der er functions til at "OpenDoor", "UnlockDrawer" "TurnDevice" (Lys og andet 220v)
Mit IDatabase har så fx "GetPersonByRFID", "AddPerson", "DeletePerson" osv.
Så har jeg mit netværks modul med følgende events:
"ClientConnected", "MessageRecieved", "ClientDisconnected"
og følgende funktion
"Send", "Broadcast", "Disconnect" osv.
Og sådan kan jeg blive ved. Hvordan stykker jeg dem sammen? Og ville i fx flytte "logikken" til netværksdelen (Altså at håndtere beskederne der kommer ind) over i en anden class og så lade den notifye LogigLayer på en eller anden måde? (muligvis med forrige forslag)
Jeg sætter virkelig pris på jeres input, det er første gang jeg programmerer sådan her!