From 243a824e19d8028cec05ea8937e018c059848997 Mon Sep 17 00:00:00 2001 From: Petrutiu Mihai Date: Thu, 30 Jun 2016 10:43:25 +0300 Subject: [PATCH] Update TV example --- src/StatePattern/TVExample/TVContext.cs | 13 +++++++++---- src/StatePattern/TVExample/TVExample.cs | 9 ++++----- src/StatePattern/TVExample/TVOffState.cs | 7 +++++++ src/StatePattern/TVExample/TVOnState.cs | 7 +++++++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/StatePattern/TVExample/TVContext.cs b/src/StatePattern/TVExample/TVContext.cs index 953bd34..79c7841 100644 --- a/src/StatePattern/TVExample/TVContext.cs +++ b/src/StatePattern/TVExample/TVContext.cs @@ -8,11 +8,16 @@ namespace StatePattern.TVExample { public class TVContext : ITVState { - public TVContext(ITVState initialState) - { - State = initialState; - } + public ITVState TvOnState { get; private set; } + public ITVState TvOffState { get; private set; } public ITVState State { get; set; } + public TVContext() + { + TvOnState = new TVOnState(this); + TvOffState = new TVOffState(this); + State = TvOffState; + } + public void OnPowerButtonPresed() { State.OnPowerButtonPresed(); diff --git a/src/StatePattern/TVExample/TVExample.cs b/src/StatePattern/TVExample/TVExample.cs index ac73438..8bfb639 100644 --- a/src/StatePattern/TVExample/TVExample.cs +++ b/src/StatePattern/TVExample/TVExample.cs @@ -10,14 +10,13 @@ namespace StatePattern.TVExample { public static void Run() { - ITVState tvOnState = new TVOnState(); - ITVState tvOffState = new TVOffState(); - - TVContext context = new TVContext(tvOffState); + TVContext context = new TVContext(); context.OnPowerButtonPresed(); - context.State = tvOnState; + context.OnPowerButtonPresed(); + + context.OnPowerButtonPresed(); context.OnPowerButtonPresed(); } diff --git a/src/StatePattern/TVExample/TVOffState.cs b/src/StatePattern/TVExample/TVOffState.cs index ceccf65..9196063 100644 --- a/src/StatePattern/TVExample/TVOffState.cs +++ b/src/StatePattern/TVExample/TVOffState.cs @@ -8,9 +8,16 @@ namespace StatePattern.TVExample { public class TVOffState : ITVState { + TVContext context; + public TVOffState(TVContext context) + { + this.context = context; + } + public void OnPowerButtonPresed() { Console.WriteLine("Turning TV on"); + context.State = context.TvOnState; } } } diff --git a/src/StatePattern/TVExample/TVOnState.cs b/src/StatePattern/TVExample/TVOnState.cs index 0f0e560..b9ef1aa 100644 --- a/src/StatePattern/TVExample/TVOnState.cs +++ b/src/StatePattern/TVExample/TVOnState.cs @@ -8,9 +8,16 @@ namespace StatePattern.TVExample { public class TVOnState : ITVState { + TVContext context; + public TVOnState(TVContext context) + { + this.context = context; + } + public void OnPowerButtonPresed() { Console.WriteLine("TV turning off"); + context.State = context.TvOffState; } } }