public Main() { //create the subject var s1 = new ConcreteSubject(); //version 1 - //create the observer //the data is passed during notification. var o3 = new ConcreteObserver(); var o4 = new ConcreteObserver(); //version 2 - //create the observer and pass the subject //to pull the requiered data after a change. var o1 = new ConcreteObserver(s1); var o2 = new ConcreteObserver(s1); //Attach observers , only version 1 s1.Add(o3); s1.Add(o4); //Perform a change of state. s1.ID = 1; s1.ID = 3; }
static void Main(string[] args) { var s = new Subject(); IObserver a = new ConcreteObserver("Observer A"); IObserver b = new ConcreteObserver("Observer B"); IObserver c = new ConcreteObserver("Observer C"); s.RegisterObserver(a); s.RegisterObserver(b); s.RegisterObserver(c); Console.WriteLine("Registered 3 observer..."); Console.WriteLine("Notify all observer:"); s.NotifyObservers("Hello observers!"); Console.WriteLine(); s.UnregisterObserver(b); Console.WriteLine("Removed observer B..."); s.NotifyObservers("Hello observers!"); Console.WriteLine(); Console.ReadKey(); }
public void Send2Signals_WithSomeClient_MustBeUpdateAtSecondSignal() { var testSubject = new ConcreteSubject() { SubjectState = "signal1" }; var observer1 = new ConcreteObserver(testSubject, "observer1"); var observer2 = new ConcreteObserver(testSubject, "observer2"); var observer3 = new ConcreteObserver(testSubject, "observer3"); testSubject.Attach(observer1); testSubject.Attach(observer2); testSubject.Attach(observer3); testSubject.Notify(); Assert.Equal("signal1", observer1.GetState()); Assert.Equal("signal1", observer2.GetState()); Assert.Equal("signal1", observer2.GetState()); testSubject.SubjectState = "signal2"; testSubject.Notify(); Assert.Equal("signal2", observer1.GetState()); Assert.Equal("signal2", observer2.GetState()); Assert.Equal("signal2", observer2.GetState()); }
static void Main() { IObserver observer = new ConcreteObserver(); Subject subject = new Subject(); subject.Regist(observer); subject.Notify(); }
static void Main() { ConcreteSubject subject = new ConcreteSubject(); IObserver observer = new ConcreteObserver(subject); subject.ChangeSubjectValue(50); }
public void ObserverTest1() { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(); subject.Attach(observer1); Assert.True(observer1.Notified == 0); }
void Start() { var subject = new ConcreteSubject(); var observer = new ConcreteObserver(subject); subject.Attach(observer); subject.SetState("测试"); }
// Use this for initialization void Start() { ConcreteSubject subject = new ConcreteSubject(); Observer observer = new ConcreteObserver(); subject.AddObserver(observer); subject.State = "下雨"; subject.State = "下雪"; }
static void Main(string[] args) { ConcreteSubject subject = new ConcreteSubject(); Observer observer = new ConcreteObserver("张三", subject); subject.Attach(observer); subject.SubjectState = "老板回来了"; subject.Notify(); }
public void SimpleTest() { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(subject); ConcreteObserver observer2 = new ConcreteObserver(subject); ConcreteObserver observer3 = new ConcreteObserver(subject); subject.Action(); }
public void ObserverDemo() { var subject = new ConcreteSubject(); var o = new ConcreteObserver(); var o2 = new ConcreteObserver2(); subject.Attach(o); subject.Attach(o2); subject.DoSomething(); }
public void GivenAnyObservableBusiness_WhenDoBusinessStuff_ThenObserverGetNotified() { // Arrange var observableBusiness = new BusinessClassObservable(); var observer = new ConcreteObserver("Observer"); // Act observableBusiness.DoBusinessStuff(); // Assert observableBusiness.ObservableState.Should().Be(observer.ObservableState); }
public void observerColor() { ConcreteSubject subject = new ConcreteSubject(); subject.brush = Brushes.Red; Ellipse testEll1 = new Ellipse(); ConcreteObserver ob1 = new ConcreteObserver(subject, testEll1); subject.Attach(ob1); subject.Notify(); Assert.AreEqual(testEll1.Fill, Brushes.Red); }
public void Initialize() { cs = new ConcreteSubject(); co1 = new ConcreteObserver(cs); co2 = new ConcreteObserver(cs); co3 = new ConcreteObserver(cs); cs.Attach(co1); cs.Attach(co2); cs.Attach(co3); }
public void ObserverTest3() { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(); ConcreteObserver observer2 = new ConcreteObserver(); subject.Attach(observer1); subject.Notify(); subject.Attach(observer2); subject.Notify(); Assert.True((observer1.Notified == 2) && (observer2.Notified == 1)); }
public void subjectCount() { ConcreteSubject subject = new ConcreteSubject(); Ellipse testEll1 = new Ellipse(); ConcreteObserver ob1 = new ConcreteObserver(subject, testEll1); Ellipse testEll2 = new Ellipse(); ConcreteObserver ob2 = new ConcreteObserver(subject, testEll2); subject.Attach(ob1); subject.Attach(ob2); Assert.AreEqual(subject.observers.Count, 2); }
public void Observer_Pattern_Test() { var subject = new Subject(); var observer = new ConcreteObserver(); subject.Attach(observer); Assert.IsTrue(observer.IsActive); subject.ChangeStates(); Assert.IsFalse(observer.IsActive); }
public void ObserverTest4() { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver(); ConcreteObserver observer2 = new ConcreteObserver(); subject.Attach(observer1); subject.Notify(subject); subject.Attach(observer2); subject.Notify(subject); subject.Detach(observer1); subject.Notify(subject); Assert.True(observer1.Notified == observer2.Notified); }
private static void Main() { var subject = new ConcreteSubject(); var observer1 = new ConcreteObserver("observer1"); var observer2 = new ConcreteObserver("observer2"); subject.Attach(observer1); subject.Attach(observer2); subject.SubjectState = "Modified"; subject.Detach(observer1); subject.Detach(observer2); subject.SubjectState = "Modified Again !"; Console.ReadKey(); }
static void Main(string[] args) { Engine engine = new Engine(); Consumer consumer = new Consumer("consumer1", engine); Consumer consumer2 = new Consumer("consumer2", engine); engine.SwitchGear(); consumer.Unsubscribe(); engine.SwitchGear(); Console.WriteLine(""); Console.WriteLine("============ Structural patterns (realize relationships between entities) ============"); Console.WriteLine("~~~~~~~~~~~~~ Facade (A single class that represents an entire subsystem) ~~~~~~~~~~~~~"); Structural.Facade facade = new Structural.Facade(); facade.AddMethod(); Console.WriteLine("~~~~~~~~~~~~~ Decorator (Attach additional responsibilities to an object dynamically) ~~~~~~~~~~~~~"); ConcreteDecorator decorator = new ConcreteDecorator(); ConcreteComponent concreteComponent = new ConcreteComponent(); decorator.SetComponent(concreteComponent); decorator.Operation(); Console.WriteLine(""); Console.WriteLine("============ Behavioral patterns (communications between entities) ============"); Console.WriteLine("~~~~~~~~~~~~~ Observer (when one object changes state, all its dependents are notified and updated automatically) ~~~~~~~~~~~~~"); ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer = new ConcreteObserver(subject, "X"); subject.Attach(observer); // Change subject and notify observers subject.State = "ABC"; subject.Notify(); Console.WriteLine("~~~~~~~~~~~~~ Strategy (Define a family of algorithms, encapsulate each one, and make them interchangeable) ~~~~~~~~~~~~~"); Context context = new Context(new SortStrategy1()); context.ContextSortInterface(); context = new Context(new SortStrategy2()); context.ContextSortInterface(); Console.WriteLine("============ Structural patterns ============"); Console.WriteLine("~~~~~~~~~~~~~ Singleton (Ensure a class has only one instance and provide a global point of access to it) ~~~~~~~~~~~~~"); Cache instance1 = Cache.Instance(); Cache instance2 = Cache.Instance(); Console.WriteLine("instance1 == instance2? {0}", instance1 == instance2); Console.WriteLine("~~~~~~~~~~~~~ FactoryMethod ~~~~~~~~~~~~~"); IComponent component = Creator.Create("first"); }
//LD_OBSERVER_000 public static void RunObserverBehavioralPattern() { //one subject and two observers ISubject <string> subject = new ConcreteSubject <string>(); ObserverBehavioralPattern.IObserver <string> observer1 = new ConcreteObserver <string>("observer1"); ObserverBehavioralPattern.IObserver <string> observer2 = new ConcreteObserver <string>("observer2"); //register the observers to the subject subject.Attach(observer1); subject.Attach(observer2); //a change to the subject automatically notifies all the observers subject.SetState("stateX"); }
public void TestMethod1() { var subject = new ConcreteSubject(); var observer1 = new ConcreteObserver(subject); var observer2 = new ConcreteObserver(subject); subject.Attach(observer1); subject.Attach(observer2); subject.State = "NEW"; subject.Notify(); Assert.AreEqual(subject.State, observer1.State); Assert.AreEqual(subject.State, observer2.State); }
public static void Observer() { ConcreteSubject cs = new ConcreteSubject(); ConcreteObserver co1 = new ConcreteObserver("Observer 1"); ConcreteObserver co2 = new ConcreteObserver("Observer 2"); ConcreteObserver co3 = new ConcreteObserver("Observer 3"); cs.Add(co1); cs.Add(co2); cs.Add(co3); cs.Notify(); Console.Read(); }
public void Run() { ConcreteSubject subject = new ConcreteSubject(); Observer observer1 = new ConcreteObserver(subject, "X"); Observer observer2 = new ConcreteObserver(subject, "Y"); Observer observer3 = new ConcreteObserver(subject, "Z"); subject.RegisterObservers(observer1, observer2, observer3); // Change subject and notify observers subject.SubjectState = "ABC"; subject.UnRegisterObservers(observer1, observer3); subject.SubjectState = "XYZ"; Console.WriteLine("\nImplementation using .NET IObserver and IObservable"); DotNetImplementation.NetObserver.Run(); }
public void Start() { var subject = new ConcreteSubject(); var firstConcreteObserver = new ConcreteObserver(subject, "First"); var secondConcreteObserver = new ConcreteObserver(subject, "Second"); subject.Attach(firstConcreteObserver); subject.Attach(secondConcreteObserver); subject.SubjectState = "FirstState"; subject.Notify(); subject.Detach(secondConcreteObserver); subject.SubjectState = "SecondState"; subject.Notify(); }
private static void Main() { using (var subject = new ConcreteSubject()) { var observer1 = new ConcreteObserver("observer1"); var observer2 = new ConcreteObserver("observer2"); using (subject.Subscribe(observer1)) using (subject.Subscribe(observer2)) { subject.SubjectState = "Modified"; } subject.SubjectState = "Modified Again !"; } Console.ReadKey(); }
public ObserverPattern() { ConcreteSubject subject = new ConcreteSubject(); ConcreteObserver observer1 = new ConcreteObserver("Rome", subject); ConcreteObserver observer2 = new ConcreteObserver("Paris", subject); ConcreteObserver observer3 = new ConcreteObserver("London", subject); subject.Attach(observer1); subject.Attach(observer2); subject.Attach(observer3); for (int i = 0; i < 10; i++) { subject.ChangeState($"Status #{i}"); subject.Notify(); Thread.Sleep(500); } }
static void Main(string[] args) { var concreteSubject = new ConcreteSubject(); var observer1 = new ConcreteObserver("Observer 1"); var observer2 = new ConcreteObserver("Observer 2"); concreteSubject.ConcreteSubjectState = 2; concreteSubject.Attach(observer1); observer1.Update(concreteSubject); concreteSubject.Attach(observer2); observer2.Update(concreteSubject); concreteSubject.ConcreteSubjectState = 3; concreteSubject.Detach(observer1); concreteSubject.ConcreteSubjectState = 4; }
static void Main(string[] args) { //Create a Product with Out Of Stock Status ConcreteSubject RedMI = new ConcreteSubject("Red MI Mobile", 10000, "Out Of Stock"); //User Anurag will be created and user1 object will be registered to the subject ConcreteObserver user1 = new ConcreteObserver("Anurag", RedMI); //User Pranaya will be created and user1 object will be registered to the subject ConcreteObserver user2 = new ConcreteObserver("Pranaya", RedMI); //User Priyanka will be created and user3 object will be registered to the subject ConcreteObserver user3 = new ConcreteObserver("Priyanka", RedMI); Console.WriteLine("Red MI Mobile current state : " + RedMI.GetAvailability()); Console.WriteLine(); // Now product is available RedMI.SetAvailability("Available"); Console.Read(); }
public void destroyConcreteObserver(ConcreteObserver o) { activeConcreteObserver.Remove(o); }