Állapot | |
---|---|
Állapot | |
Típusú | viselkedési |
Leírása: Tervezési minták | Igen |
Az állapot ( Eng. State ) egy viselkedési tervezési minta . Olyan esetekben használják, amikor a program végrehajtása során az objektumnak állapotától függően meg kell változtatnia viselkedését.
A minta 3 blokkból áll:
A widget egy olyan osztály, amelynek objektumainak az állapottól függően meg kell változtatniuk viselkedésüket.
Az IState egy interfész , amelyet a konkrét állapotok mindegyikének implementálnia kell. Ezen a felületen keresztül a Widget objektum kölcsönhatásba lép az állapottal azáltal, hogy metódushívásokat delegál rá. Az interfésznek tartalmaznia kell a visszacsatolás eszközeit a megváltoztatandó objektumhoz. Ehhez egy eseményt használnak ( minta Kiadó - Előfizető ). Erre azért van szükség, hogy a program végrehajtása során események bekövetkezésekor lecseréljük az állapotobjektumot. Előfordulhatnak olyan esetek, amikor maga a Widget időnként lekérdezi az állapotobjektumot az átmenetre vonatkozóan.
StateA ... StateZ - konkrét állapotok osztályai. Információkat kell tartalmaznia arról, hogy az objektum milyen feltételek mellett és milyen állapotban léphet át az aktuális állapotból. Például egy objektum az ÁllapotA-ból a StateB-be és a StateC-be, az ÁllapotB-ból vissza az ÁllapotA-ba és így tovább. Az egyik objektumának tartalmaznia kell a widgetet a létrehozáskor.
Ennek a mintának az alkalmazása nehéz lehet, ha az állapotoknak kommunikálniuk kell, vagy ha az egyik állapot beállítja a másik tulajdonságait. Ebben az esetben globális objektumra lesz szükség, ami nem túl jó építészeti megoldás.
Sablon alkalmazása
Forrásszöveg C# nyelven a rendszer használatával ; névtér Digital_Patterns.Behavioral.State { public interface IAutomatState { String GotApplication (); StringCheckApplication ( ); String RentApartment (); StringDispenseKeys ( ); } nyilvános felület IAutomat { void GotApplication (); érvénytelen CheckApplication (); érvénytelen RentApartment (); void SetState ( IAutomatState s ); IAutomatState GetWaitingState (); IAutomatState GetGotApplicationState (); IAutomatState GetApartmentRentedState (); IAutomatState GetFullyRentedState (); Int32 Szám { get ; készlet ; } } public class Automat : IAutomat { private IAutomatState _waitingState ; privát IAutomatState _gotApplicationState ; privát IAutomatState _apartmentRentedState ; privát IAutomatState _fullRentedState ; privát IAutomatState _state ; privát Int32_count ; _ public Automat ( Int32 n ) { _count = n ; _waitingState = new WaitingState ( ez ); _gotApplicationState = new GotApplicationState ( ez ); _apartmentRentedState = új ApartmanRentedState ( ez ); _fullRentedState = new FullyRentedState ( ez ); _state = _waitingState ; } public void GotApplication () { Konzol . WriteLine ( _state.GotApplication ( ) ); } public void CheckApplication () { Konzol . WriteLine ( _state.CheckApplication ( ) ); } public void RentApartment () { Konzol . WriteLine ( _state.RentApartment ( ) ); Konzol . WriteLine ( _state . DispenseKeys ()); } public void SetState ( IAutomatState s ) { _state = s ; } public IAutomatState GetWaitingState () { return _waitingState ; } public IAutomatState GetGotApplicationState () { return _gotApplicationState ; } public IAutomatState GetApartmentRentedState () { return _apartmentRentedState ; } public IAutomatState GetFullyRentedState () { return _teljesenRentedState ; } public int Szám { get { return _count ; } set { _count = érték ; } } } public class WaitingState : IAutomatState { private Automat _automat ; public WaitingState ( Automat automat ) { _automat = automat ; } public String GotApplication () { _automat . SetState ( _automat . GetGotApplicationState ()); return "Köszönjük a jelentkezést." ; } public String CheckApplication () { return "Jelentkezést kell benyújtania." ; } public String RentApartment () { return "Jelentkezést kell benyújtania." ; } public String DispenseKeys () { return "Jelentkezést kell benyújtania." ; } } public class GotApplicationState : IAutomatState { private Automat _automat ; private readonly Random _random ; public GotApplicationState ( Automat automat ) { _automat = automat ; _random = new Random ( System . DateTime . Now . Milliszekundum ); } public String GotApplication () { return "Már megkaptuk a jelentkezését." ; } public String CheckApplication () { var yesNo = _random . Következő () % 10 ; if ( igenNem > 4 && _automat . Számlálás > 0 ) { _automat . SetState ( _automat . GetApartmentRentedState ()); return "Gratulálunk, jóváhagyták." ; } else { _automatic . SetState ( _automat . GetWaitingState ()); return "Sajnáljuk, nem hagyták jóvá." ; } } public String RentApartment () { return "Ellenőriznie kell a jelentkezését." ; } public String DispenseKeys () { return "Ellenőriznie kell az alkalmazást." ; } } public class ApartmentRentedState : IAutomatState { private Automat _automat ; public ApartmentRentedState ( Automat automat ) { _automat = automat ; } public String GotApplication () { return "Várjon, lakást bérelünk Önnek." ; } public String CheckApplication () { return "Várjon, lakást bérelünk Önnek." ; } public String RentApartment () { _automat . Count = _automat . Szám - 1 ; return "Bérelni neked egy lakást..." ; } public String DispenseKeys () { if ( _automat . Count <= 0 ) _automat . SetState ( _automat . GetFullyRentedState ()); else _automatikus . SetState ( _automat . GetWaitingState ()); return "Itt vannak a kulcsaid!" ; } } public class FullyRentedState : IAutomatState { private Automat _automat ; public FullyRentedState ( Automat automat ) { _automat = automat ; } public String GotApplication () { return "Sajnáljuk, teljesen bérelve vagyunk." ; } public String CheckApplication () { return "Sajnáljuk, teljesen bérelve vagyunk." ; } public String RentApartment () { return "Sajnáljuk, teljesen ki vagyunk bérelve." ; } public String DispenseKeys () { return "Sajnáljuk, teljesen bérelve vagyunk." ; } } class Program { static void Main ( string [] args ) { var automat = new Automat ( 9 ); automata . GotApplication (); automata . Alkalmazás ellenőrzése (); automata . RentApartment (); } } }Ugyanez a példa, a sablon alkalmazása nélkül
Forrásszöveg C# nyelven a rendszer használatával ; névtér Digital_Patterns.Behavioral.State { public enum Állapot { TELJES_BÉRLET = 0 , VÁRAKOZÁS = 1 , GOT_APPLICATION = 2 , APARTMAN_BÉRLET = 3 , } public class RentalMethods { private readonly Random _random ; private Int32 _numberApartments ; private State _state = Állam . VÁRÁS ; public RentalMethods ( Int32 n ) { _numberApartments = n ; _random = new Random ( System . DateTime . Now . Milliszekundum ); } public void GetApplication () { switch ( _state ) { case State . FULLY_RENTED : Konzol . WriteLine ( "Elnézést, teljesen ki vagyunk bérelve." ); szünet ; eset Állam . VÁRAKOZÁS : _state = Állapot . GOT_APPLICATION ; Konzol . WriteLine ( "Köszönjük a jelentkezést." ); szünet ; eset Állam . GOT_APPLICATION : Konzol . WriteLine ( "Már megkaptuk a jelentkezését." ); szünet ; eset Állam . APARTMENT_RENTED : Konzol . WriteLine ( "Várj, bérelünk neked egy lakást." ); szünet ; } } public void CheckApplication () { var yesNo = _random . következő ()% 10 ; switch ( _state ) { case State . FULLY_RENTED : Konzol . WriteLine ( "Elnézést, teljesen ki vagyunk bérelve." ); szünet ; eset Állam . VÁRAKOZÁS : Konzol . WriteLine ( "Jelentkezést kell benyújtani." ); szünet ; eset Állam . GOT_APPLICATION : if ( igenNem > 4 && _számApartments > 0 ) { Konzol . WriteLine ( "Gratulálunk, jóváhagyták." ); _state = Állapot . BÉRELT LAKÁS ; RentApartment (); } else { Konzol . WriteLine ( "Sajnos nem hagyták jóvá." ); _state = Állapot . VÁRÁS ; } break ; eset Állam . APARTMENT_RENTED : Konzol . WriteLine ( "Várj, bérelünk neked egy lakást." ); szünet ; } } public void RentApartment () { switch ( _state ) { case State . FULLY_RENTED : Konzol . WriteLine ( "Elnézést, teljesen ki vagyunk bérelve." ); szünet ; eset Állam . VÁRAKOZÁS : Konzol . WriteLine ( "Jelentkezést kell benyújtani." ); szünet ; eset Állam . GOT_APPLICATION : Konzol . WriteLine ( "Ellenőriznie kell az alkalmazást." ); szünet ; eset Állam . APARTMENT_RENTED : Konzol . WriteLine ( "Lakást bérelek...." ); _számApartments --; DispenseKeys (); szünet ; } } public void DispenseKeys () { switch ( _state ) { case State . FULLY_RENTED : Konzol . WriteLine ( "Elnézést, teljesen ki vagyunk bérelve." ); szünet ; eset Állam . VÁRAKOZÁS : Konzol . WriteLine ( "Jelentkezést kell benyújtani." ); szünet ; eset Állam . GOT_APPLICATION : Konzol . WriteLine ( "Ellenőriznie kell az alkalmazást." ); szünet ; eset Állam . APARTMENT_RENTED : Konzol . WriteLine ( "Itt vannak a kulcsaid!" ); _state = Állapot . VÁRÁS ; szünet ; } } } class Program { static void Main ( string [] args ) { var rentalMethods = new RentalMethods ( 9 ); bérleti módszerek . GetApplication (); bérleti módszerek . Alkalmazás ellenőrzése (); bérleti módszerek . RentApartment (); bérleti módszerek . DispenseKeys (); } } }Példa az állapotok állapotának megváltoztatására.
Forrásszöveg javascriptben // "interfész" állapot function Állapot () { this . someMethod = függvény () { }; ezt . nextState = függvény () { }; } // állapot megvalósítás // első állapotfüggvény StateA ( widjet ) { var duplicate = this ; // hivatkozás a példányosított objektumra (mert ez változhat) ezt . someMethod = function () { alert ( "StateA.someMethod" ); másodpéldány . nextState (); }; ezt . nextState = function () { alert ( "StateA > StateB" ); widget . onNextState ( new StateB ( widjet ) ); }; } ÁllapotA . prototípus = új állapot (); államA . prototípus . konstruktor = StateA ; // második állapotfüggvény StateB ( widjet ) { var duplicate = this ; ezt . someMethod = function () { alert ( "StateB.someMethod" ); másodpéldány . nextState (); }; ezt . nextState = function () { alert ( "StateB > StateA" ); widget . onNextState ( new StateA ( widjet ) ); }; } ÁllapotB . prototípus = új állapot (); ÁllapotB . prototípus . konstruktor = StateB ; // Widget "interfész" function Widget () { this . someMethod = függvény () { }; ezt . onNextState = function ( állapot ) { }; } // Widget megvalósítás function Widget1 () { var state = new StateA ( this ); ezt . someMethod = function () { állapot . valami módszer (); }; ezt . onNextState = function ( newState ) { state = newState ; }; } Widget1 . prototípus = új widget (); Widget1 . prototípus . konstruktor = Widget1 ; // használat var widget = new Widget1 (); widget . valami módszer (); // StateA.someMethod // StateA > StateB widget . valami módszer (); // StateB.someMethod // ÁllapotB > ÁllapotAÁllapotok megváltoztatása a Widget metódusának meghívásával (a cikk angol változatából).
Forrásszöveg javascriptben // "interfész" állapot function AbstractTool () { this . mozogTo = függvény ( x , y ) { }; ezt . mouseDown = függvény ( x , y ) { }; ezt . mouseUp = függvény ( x , y ) { }; } // állapot megvalósítás // ceruza eszköz funkció PenTool ( widjet ) { var duplicate = this ; // hivatkozás a példányosított objektumra (mert ez változhat) var mouseIsDown = false ; // az egérgomb jelenleg nincs lenyomva var lastCoords = []; // az egérkurzor múltbeli koordinátái ezt . moveTo = function ( x , y ) { if ( mouseIsDown && lastCoords . long ) { drawLine ( lastCoords , [ x , y ]); } lastCoords = [ x , y ]; }; ezt . mouseDown = function ( x , y ) { mouseIsDown = igaz ; lastCoords = [ x , y ]; }; ezt . mouseUp = function ( x , y ) { mouseIsDown = false ; }; function drawLine ( coords1 , coords2 ) { alert ( "drawLine: [" + coords1 [ 0 ] + ", " + coords1 [ 1 ] + "] - [" + coords2 [ 0 ] + ", " + coords2 [ 1 ] + "]" ); } } PenTool . prototípus = new AbstractTool (); pentool . prototípus . konstruktor = PenTool ; // kiválasztó eszköz függvény SelectionTool ( widget ) { var duplicate = this ; // hivatkozás a példányosított objektumra (mert ez változhat) var mouseIsDown = false ; // az egérgomb jelenleg nincs lenyomva var startCoords = []; // az egérkurzor koordinátái, amikor a gombra kattintanak ezt . moveTo = function ( x , y ) { if ( mouseIsDown ) { setSelection ( startCoords , [ x , y ]); } }; ezt . mouseDown = function ( x , y ) { startCoords = [ x , y ]; mouseIsDown = igaz ; }; ezt . mouseUp = function ( x , y ) { mouseIsDown = false ; }; function setSelection ( coords1 , coords2 ) { alert ( "setSelection: [" + coords1 [ 0 ] + ", " + coords1 [ 1 ] + "] - [" + coords2 [ 0 ] + ", " + coords2 [ 1 ] + "]" ); } }; Kiválasztó eszköz . prototípus = new AbstractTool (); Kiválasztó eszköz . prototípus . konstruktor = SelectionTool ; // Widget megvalósítás function DrawingController () { var currentTool = new SelectionTool (); // aktív eszköz ezt . moveTo = function ( x , y ) { currentTool . mozogTo ( x , y ); }; ezt . mouseDown = function ( x , y ) { currentTool . mouseDown ( x , y ); }; ezt . mouseUp = function ( x , y ) { currentTool . mouseUp ( x , y ); }; ezt . selectPenTool = function () { // a területkiválasztó eszköz kiválasztása currentTool = new PenTool (); }; ezt . selectSelectionTool = function () { // ceruzaeszköz kiválasztása currentTool = new SelectionTool (); }; } var widget = new DrawingController (); widget . egérrel lefelé ( 1 , 1 ); widget . mozogTo ( 1 , 2 ); // setSelection: [1, 1] - [1, 2] widget . mozogTo ( 1 , 3 ); // setSelection: [1, 1] - [1, 3] widget . mouseUp ( 1 , 3 ); widget . mozogTo ( 1 , 4 ); widget . selectPenTool (); widget . egérrel lefelé ( 1 , 1 ); widget . mozogTo ( 1 , 2 ); // DrawLine: [1, 1] - [1, 2] widget . mozogTo ( 1 , 3 ); // DrawLine: [1, 2] - [1, 3] widget . mouseUp ( 1 , 3 ); widget . mozogTo ( 1 , 4 );Sablon alkalmazása
Forrásszöveg VB.NET nyelven Névtér Digital_Patterns.Behavioral.State Nyilvános interfész IAutomatState függvény GotApplication () mint [ String ] Funkció CheckApplication () As [ String ] Function RentApartment () As [ String ] Function DispenseKeys () As [ String ] End Interface Nyilvános felület IAutomat Sub GotApplication () Al CheckApplication () Sub RentApartment () Sub SetState ( ByVal s As IAutomatState ) függvény GetWaitingState () As IAutomatState függvény GetGotApplicationState () As IAutomatState függvény GetApartmentRentedState () As IAutomatState függvény GetFullyRented IAutomatState ( ) Tulajdonságszám ( ) Int32 végfelületként _ _ Public Class Automat implementálja az IAutomat Private _waitingState As IAutomatState Private _gotApplicationState As IAutomatState Private _apartmentRentedState As IAutomatState Private _fullRentedState As IAutomatState Private _state As IAutomatState Private _count _ _ Public Sub New ( ByVal n As Int32 ) _count = n _waitingState = New WaitingState ( én ) _gotApplicationState = New GotApplicationState ( én ) _apartmentRentedState = Új lakásRentedState ( én ) _fullS_New_RentedStateed = Vége _ _ _ _ _ _ _ _ _ Public Sub GotApplication () Az IAutomat megvalósítása . GotApplicationConsole . _ WriteLine ( _state.GotApplication ( ) ) End Sub Public Sub CheckApplication () Az IAutomat megvalósítása . CheckApplication Console . WriteLine ( _state . CheckApplication ()) End Sub Public Sub RentApartment () Az IAutomat megvalósítása . RentApartment Console . WriteLine ( _state . RentApartment ()) Console . WriteLine ( _state . DispenseKeys ()) End Sub Public Sub SetState ( ByVal s As IAutomatState ) Az IAutomat megvalósítása . SetState _state = s End Sub Nyilvános függvény GetWaitingState () Ahogy az IAutomatState megvalósítja az IAutomatot . GetWaitingState Return _waitingState End Function Nyilvános függvény GetGotApplicationState () Ahogy az IAutomatState implementálja az IAutomatot . GetGotApplicationState Return _gotApplicationState End Function Nyilvános funkció GetApartmentRentedState () As IAutomatState implementálja az IAutomatot . GetApartmentRentedState Return _apartmentRentedState Végfüggvény _ Nyilvános függvény GetFullyRentedState () As IAutomatState implementálja az IAutomat . GetFullyRentedState Return _fullRentedState végfüggvény _ Public Property Count () As Integer Implements IAutomat . Count Get Return _count End Get Set ( ByVal érték As Integer ) _count = érték Vége Beállítás Vége Tulajdonság záró osztály A Public Class WaitingState az IAutomatState Private _automat funkciót automataként valósítja meg Public Sub New ( ByVal automat As Automat ) _automat = automat End Sub Nyilvános függvény GotApplication () As [ String ] implementálja az IAutomatState-et . GotApplication_automat . _ SetState ( _automat . GetGotApplicationState ()) " Köszönjük az alkalmazást." végfunkció _ Public Function CheckApplication () As [ String ] ként valósítja meg az IAutomatState-et . CheckApplication Return "Jelentkezést kell benyújtania." végfunkció _ Public Function RentApartment () As [ String ] Implements IAutomatState . RentApartment Return "Jelentkezést kell benyújtania." végfunkció _ Public Function DispenseKeys () As [ String ] Az IAutomatState megvalósítása . DispenseKeys Return "Kérelmet kell benyújtania." Vége funkció Végosztály _ Public Class GotApplicationState implementálja az IAutomatState Private _automat Automatikus Private Csak olvasható _random As Random Public Sub New ( ByVal automat As Automat ) _automat = automat _random = Új véletlenszerű ( System . DateTime . Now . Milliszekundum ) End Sub Nyilvános függvény GotApplication () As [ String ] implementálja az IAutomatState-et . GotApplication Return "Már megkaptuk a jelentkezését." végfunkció _ Public Function CheckApplication () As [ String ] ként valósítja meg az IAutomatState-et . CheckApplication Dim yesNo = _random . [ Következő ] () 10. mód Ha igenNem > 4 És szintén _automat . Számlálás > 0 Majd _automat . SetState ( _automat . GetApartmentRentedState ()) Return "Gratulálunk, jóváhagyták." Egyéb _automatikus . SetState ( _automat . GetWaitingState ()) Return "Sajnáljuk, nem hagyták jóvá." End If End Funkció Public Function RentApartment () As [ String ] Implements IAutomatState . RentApartment Return "Ellenőriznie kell a jelentkezését." végfunkció _ Public Function DispenseKeys () As [ String ] Az IAutomatState megvalósítása . DispenseKeys Return "Ellenőriznie kell az alkalmazást." Vége funkció Végosztály _ Public Class ApartmentRentedState Az IAutomatState Private _automat automataként valósítja meg Public Sub New ( ByVal automat As Automat ) _automat = automat End Sub Nyilvános függvény GotApplication () As [ String ] implementálja az IAutomatState-et . GotApplication Return "Várjon, bérelünk Önnek egy lakást." végfunkció _ Public Function CheckApplication () As [ String ] ként valósítja meg az IAutomatState-et . CheckApplication Return "Várjon, bérelünk Önnek egy lakást." végfunkció _ Public Function RentApartment () As [ String ] Implements IAutomatState . RentApartment _automat . Count = _automat . Count - 1 Return "Bérbeadás önnek egy lakást...." Vége funkció Public Function DispenseKeys () As [ String ] Az IAutomatState megvalósítása . DispenseKeys Ha _automat . Számlálás <= 0 Majd _automat . SetState ( _automat . GetFullyRentedState ()) Else _automat . SetState ( _automat . GetWaitingState ()) End If Return "Itt vannak a kulcsai!" Vége funkció Végosztály _ Public Class FullyRentedState implementálja az IAutomatState Private _automat mint automatát Public Sub New ( ByVal automat As Automat ) _automat = automat End Sub Nyilvános függvény GotApplication () As [ String ] implementálja az IAutomatState-et . GotApplication Return "Sajnáljuk, teljesen ki vagyunk bérelve." végfunkció _ Public Function CheckApplication () As [ String ] ként valósítja meg az IAutomatState-et . CheckApplication Return "Sajnáljuk, teljesen ki vagyunk bérelve." végfunkció _ Public Function RentApartment () As [ String ] Implements IAutomatState . RentApartment Return "Sajnáljuk, teljesen ki vagyunk bérelve." végfunkció _ Public Function DispenseKeys () As [ String ] Az IAutomatState megvalósítása . DispenseKeys Return "Sajnáljuk, teljesen ki vagyunk bérelve." Vége funkció Végosztály _ Osztály Program Megosztott al - fő () Dim automata = Új automata ( 9 ) automata . GotApplication () automat . CheckApplication () automat . bérelhető apartman () Konzol . Olvasás () End Sub End Class End névtérUgyanez a példa, a sablon alkalmazása nélkül
Forrásszöveg VB.NET nyelven Névtér Digital_Patterns.Behavioral.State Nyilvános enum állapota TELJES_BÉRLETETT = 0 VÁRAKOZÁS = 1 GOT_APPLICATION = 2 APARTMENT_BÉRLETES = 3 Befejezési adat Public Class RentalMethods Csak olvasható privát _random As Random Private _numberApartments As Int32 Private _state As State = állam . VÁRAKOZÁS Public Sub New ( ByVal n As Int32 ) _numberApartments = n _random = Új véletlenszerű ( System . Date Time . Now . Milliszekundum ) End Sub Public Sub GetApplication () Válassza a Case _state Case State lehetőséget . FULLY_RENTED konzol . WriteLine ( "Sajnáljuk, teljesen ki vagyunk bérelve." ) Kilépés Válassza az eset állapotát . WAITING_state = Állam _ _ GOT_APPLICATION konzol . WriteLine ( "Köszönjük a jelentkezést." ) Kilépés Válassza az eset állapotát . GOT_APPLICATION konzol . WriteLine ( "Már megkaptuk a jelentkezését." ) Kilépés Válassza az eset állapotát . APARTMENT_RENTED Konzol . WriteLine ( "Várjon, bérelünk Önnek egy lakást." ) Kilépés Kiválasztás Vége Kiválasztás Vége Sub Nyilvános alellenőrzési alkalmazás () Dim yesNo = _random . [ Következő ] () 10. mód Válassza a Case _state Case State lehetőséget . FULLY_RENTED konzol . WriteLine ( "Sajnáljuk, teljesen ki vagyunk bérelve." ) Kilépés Válassza az eset állapotát . VÁRAKOZÓ konzol . WriteLine ( "Jelentkezést kell benyújtania." ) Kilépés Válassza az eset állapotát . GOT_APPLICATION Ha igenNem > 4 És _számApartments > 0 Akkor Konzol . WriteLine ( "Gratulálunk, jóváhagyták." ) _state = Állapot . APARTMENT_RENTED RentApartment () Else Console . WriteLine ( "Sajnos nem hagyták jóvá." ) _state = Állapot . VÁRAKOZÁS Vége Ha kilépés Válassza az eset állapotát . APARTMENT_RENTED Konzol . WriteLine ( "Várjon, bérelünk Önnek egy lakást." ) Kilépés Kiválasztás Vége Kiválasztás Vége Sub Public Sub RentApartment () Válassza a Case _state Case State lehetőséget . FULLY_RENTED konzol . WriteLine ( "Sajnáljuk, teljesen ki vagyunk bérelve." ) Kilépés Válassza az eset állapotát . VÁRAKOZÓ konzol . WriteLine ( "Jelentkezést kell benyújtania." ) Kilépés Válassza az eset állapotát . GOT_APPLICATION konzol . WriteLine ( "Ellenőriznie kell az alkalmazást." ) Kilépés Válassza az eset állapotát . APARTMENT_RENTED Konzol . WriteLine ( "Bérelünk egy lakást...." ) _numberApartments -= 1 DispenseKeys () Kilépés Kiválasztás Vége Kiválasztás vége al Public Sub DispenseKeys () Válassza a Case _state Case State lehetőséget . FULLY_RENTED konzol . WriteLine ( "Sajnáljuk, teljesen ki vagyunk bérelve." ) Kilépés Válassza az eset állapotát . VÁRAKOZÓ konzol . WriteLine ( "Jelentkezést kell benyújtania." ) Kilépés Válassza az eset állapotát . GOT_APPLICATION konzol . WriteLine ( "Ellenőriznie kell az alkalmazást." ) Kilépés Válassza az eset állapotát . APARTMENT_RENTED Konzol . WriteLine ( "Itt vannak a kulcsaid!" ) _state = Állapot . VÁRAKOZÁS Kilépés Kiválasztás Vége Kiválasztás End Sub End Class osztály programja Megosztott al - fő () Dim rentalMethods = New RentalMethods ( 9 ) bérleti módszerek . GetApplication () rentalMethods . CheckApplication () rentalMethods . BérlésApartment () bérlésMódszerek . DispenseKeys () Konzol . Olvassa el () End Sub End Class End névtér
Tervezési minták | |
---|---|
Fő | |
Generatív | |
Szerkezeti | |
Viselkedési | |
Párhuzamos programozás |
|
építészeti |
|
Java EE sablonok | |
Egyéb sablonok | |
Könyvek | |
Személyiségek |