internal void Simnulate(AbstractDuckFactory duckFactory) { //1.使用工厂创建鸭子 //2.使用装饰者,创建被装饰的鸭子 IQuackable blueheadDuck = duckFactory.CreateBlueheadDuck(); IQuackable pinkheadDuck = duckFactory.CreatePinkheadDuck(); IQuackable duckCall = duckFactory.CreateDuckCall(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); //使用适配器模式创建一个会鹅叫的鸭子。 IQuackable gooseDuck = new GooseAdapter(new Goose()); IQuackable[] quacks = { blueheadDuck, pinkheadDuck, duckCall, rubberDuck, gooseDuck }; //使用组合模式和迭代器模式 Flock flockOfDucks = new Flock(quacks); Console.WriteLine("------鸭子模拟器-------"); Simnulate(flockOfDucks); Console.WriteLine("------观察开始-------"); //使用观察者模式 IQuackableObservable provider = new IQuackableObservable(); IQuackableObserver reporter1 = new IQuackableObserver(); reporter1.Subscribe(provider); provider.Notify(duckFactory.CreateRubberDuck()); Console.WriteLine("------观察结束-------"); Console.WriteLine("鸭子叫的次数为:" + QuackCounter.NumberOfQuacks); }
static void Main(string[] args) { AbstractDuckFactory _duckFactory = new CountingDuckFactory(); IQuackable _mallardDuck = _duckFactory.CreateMallarDuck(); IQuackable _readheadDuck = _duckFactory.CreateRedheadDuck(); IQuackable _duckCall = _duckFactory.CreateDuckCall(); IQuackable _rubberDuck = _duckFactory.CreateRubberDuck(); IQuackable _goose = new GooseAdapter(new Goose()); Console.WriteLine("\nDuck Simulator\n"); //Стая уток DuckFlock _duckFlock = new DuckFlock(); _duckFlock.Add(_readheadDuck); _duckFlock.Add(_rubberDuck); _duckFlock.Add(_duckCall); _duckFlock.Add(_goose); _mallardDuck.Quack(); _readheadDuck.Quack(); _duckCall.Quack(); _rubberDuck.Quack(); _goose.Quack(); Console.WriteLine("\nThe ducks quacks " + QuackCounter.GetQuacks() + " times"); //Вызов стаи _duckFlock.Quack(); Console.ReadLine(); }
public void simulate(AbstractDuckFactory duckFactory) { Quackable mallardDuck = duckFactory.createMallardDuck(); Quackable redheadDuck = duckFactory.createRedheadDuck(); Quackable duckCall = duckFactory.createDuckCall(); Quackable rubberDuck = duckFactory.createRubberDuck(); Goose goose = new Goose(); Quackable gooseAdapter = new GooseAdapter(goose); Flock flockOfDucks = new Flock(); Quackologist quackologist = new Quackologist(); flockOfDucks.add(mallardDuck); flockOfDucks.add(redheadDuck); flockOfDucks.add(duckCall); flockOfDucks.add(rubberDuck); //foarte important sa fie dupa ce am adaugat lez ducks , //inregistrarea observerului se face cu interator pt toate lez ducks existente flockOfDucks.registerObserver(quackologist); Console.WriteLine("Duck Simulator"); simulate(flockOfDucks); Console.WriteLine(" The ducks quacked " + QuackCounter.getQaucks() + " times"); }
public void Compound_Adapter_Behavior() { DuckSimulator duckSim = new DuckSimulator(); IQuackable duck1 = new RubberDuck(); Goose goose = new Goose(); IQuackable gooseAdapter = new GooseAdapter(goose); duckSim.Simulate(duck1); duckSim.Simulate(gooseAdapter); }
static void Main(string[] args) { // Abstract Factory AbstractDuckFactory duckFactory = new CountingDuckQuackFactory(); // Abstract factory to create Strategy pattern wrapped in Decorator pattern IQuackable mallardDuck = duckFactory.CreateMallardDuck(); IQuackable redheadDuck = duckFactory.CreateRedheadDuck(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); // Adapter pattern IQuackable goose = new GooseAdapter(new Goose()); // Composite pattern Flock flockOfDucks = new Flock(); flockOfDucks.Add(mallardDuck); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(rubberDuck); Flock flockOfMallards = new Flock(); flockOfMallards.Add(duckFactory.CreateMallardDuck()); flockOfMallards.Add(duckFactory.CreateMallardDuck()); flockOfMallards.Add(duckFactory.CreateMallardDuck()); flockOfMallards.Add(duckFactory.CreateMallardDuck()); flockOfMallards.Add(duckFactory.CreateMallardDuck()); duckCall(mallardDuck); duckCall(redheadDuck); duckCall(rubberDuck); duckCall(goose); // Flock of Mallards Console.WriteLine("\nA flock of Mallards quacking ..."); flockOfMallards.Quack(); // Flock of mixed ducks Console.WriteLine("\nA flock of mixed ducks quacking ..."); flockOfDucks.Quack(); // Altogether now Console.WriteLine("\nEntire flock quacking ..."); flockOfDucks.Add(flockOfMallards); flockOfDucks.Quack(); Console.WriteLine($"Number of duck quacks = {QuackCounter.GetQuackCount()}"); Console.ReadKey(); }
static void Main(string[] args) { // Strategy pattern IQuackable mallardDuck = new MallardDuck(); IQuackable redheadDuck = new RedheadDuck(); IQuackable rubberDuck = new RubberDuck(); // Adapter pattern IQuackable goose = new GooseAdapter(new Goose()); duckCall(mallardDuck); duckCall(redheadDuck); duckCall(rubberDuck); duckCall(goose); Console.ReadKey(); }
public void Simulate(AbstractDuckFactory duckFactory) { IQuackable mallardDuck = duckFactory.CreateMallardDuck(); IQuackable redheadDuck = duckFactory.CreateRedheadDuck(); IQuackable duckCall = duckFactory.CreateDuckCall(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); IQuackable gooseDuck = new GooseAdapter(new Goose()); Console.WriteLine("\nDuck Simulator: With Abstract Factory, Composite - Flocks"); Flock flockOfDucks = new Flock(); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); flockOfDucks.Add(gooseDuck); Flock flockOfMallards = new Flock(); IQuackable mallardOne = duckFactory.CreateMallardDuck(); IQuackable mallardTwo = duckFactory.CreateMallardDuck(); IQuackable mallardThree = duckFactory.CreateMallardDuck(); IQuackable mallardFour = duckFactory.CreateMallardDuck(); flockOfMallards.Add(mallardOne); flockOfMallards.Add(mallardTwo); flockOfMallards.Add(mallardThree); flockOfMallards.Add(mallardFour); flockOfDucks.Add(flockOfMallards); Console.WriteLine("\nDuck Simulator: Whole Flock Simulation"); Simulate(flockOfDucks); Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation"); Simulate(flockOfMallards); Console.WriteLine("\nDuck Simulator: With Observer"); Quackologist quackologist = new Quackologist(); flockOfDucks.RegisterObserver(quackologist); Simulate(flockOfDucks); Console.WriteLine("The ducks quacked " + QuackCounter.NumberOfQuacks + " times."); }
private static void Simulate(AbstractDuckFactory duckFactory, AbstractGooseFactory gooseFactory) { IQuackable mallardDuck = duckFactory.CreateMallardDuck(); IQuackable readheadDuck = duckFactory.CreateReadheadDuck(); IQuackable duckCall = duckFactory.CreateDuckCall(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); IQuackable gooseDuck = new GooseAdapter(gooseFactory.CreateGoose()); Console.WriteLine("\nDuck Simulator: With Composite - Flocks"); var flockOfDucks = new Flock(); flockOfDucks.Add(mallardDuck); flockOfDucks.Add(readheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); flockOfDucks.Add(gooseDuck); var flockOfMallards = new Flock(); IQuackable mallard_1 = duckFactory.CreateMallardDuck(); IQuackable mallard_2 = duckFactory.CreateMallardDuck(); IQuackable mallard_3 = duckFactory.CreateMallardDuck(); IQuackable mallard_4 = duckFactory.CreateMallardDuck(); flockOfMallards.Add(mallard_1); flockOfMallards.Add(mallard_2); flockOfMallards.Add(mallard_3); flockOfMallards.Add(mallard_4); flockOfDucks.Add(flockOfMallards); Console.WriteLine("\nDuck Simulator: With Observer"); var quackologist = new Quackologist(); flockOfDucks.RegisterObserver(quackologist); Console.WriteLine("\nDuck Simulator: Whole Flock Simulation"); Simulate(flockOfDucks); Console.WriteLine("\nDuck Simulator: Mallard Flock Simulation"); Simulate(flockOfMallards); Console.WriteLine($"The ducks quacked {QuackCounter.GetQuacks()} times"); }
static void Main(string[] args) { // Strategy pattern wrapped in Decorator pattern IQuackable mallardDuck = new QuackCounter(new MallardDuck()); IQuackable redheadDuck = new QuackCounter(new RedheadDuck()); IQuackable rubberDuck = new QuackCounter(new RubberDuck()); // Adapter pattern IQuackable goose = new GooseAdapter(new Goose()); duckCall(mallardDuck); duckCall(redheadDuck); duckCall(rubberDuck); duckCall(goose); Console.WriteLine($"Number of duck quacks = {QuackCounter.GetQuackCount()}"); Console.ReadKey(); }
static void Main(string[] args) { // Abstract Factory AbstractDuckFactory duckFactory = new CountingDuckQuackFactory(); // Abstract factory to create Strategy pattern wrapped in Decorator pattern IQuackable mallardDuck = duckFactory.CreateMallardDuck(); IQuackable redheadDuck = duckFactory.CreateRedheadDuck(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); // Adapter pattern IQuackable goose = new GooseAdapter(new Goose()); duckCall(mallardDuck); duckCall(redheadDuck); duckCall(rubberDuck); duckCall(goose); Console.WriteLine($"Number of duck quacks = {QuackCounter.GetQuackCount()}"); Console.ReadKey(); }
public void Simulate() { IQuackableObservable mallardDuck = factory.CreateMallardDuck(); IQuackableObservable redheadDuck = factory.CreateRubberDuck(); IQuackableObservable duckCall = factory.CreateDuckCall(); IQuackableObservable rubberDuck = factory.CreateRubberDuck(); IQuackableObservable gooseDuck = new GooseAdapter(new Goose()); Flock flockOfDucks = new Flock(); flockOfDucks.Add(mallardDuck); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); Quackologist q = new Quackologist(); flockOfDucks.RegisterObserver(q); mallardDuck.RegisterObserver(q); Console.WriteLine("-----Whole Ducks quack-----\n"); Simulate(flockOfDucks); Console.WriteLine("--------Duck Simulator----------"); Simulate(mallardDuck); Simulate(redheadDuck); Simulate(duckCall); Simulate(rubberDuck); Simulate(gooseDuck); Console.WriteLine("Quacks Count:" + QuackCounter.quackCount); }
private void Simulate(AbstractDuckFactory duckFactory) { IQuackable redheadDuck = duckFactory.CreateRedheadDuck(); IQuackable duckCall = duckFactory.CreateDuckCall(); IQuackable rubberDuck = duckFactory.CreateRubberDuck(); IQuackable gooseDuck = new GooseAdapter(new Goose()); Flock flockOfDucks = new Flock(); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); flockOfDucks.Add(gooseDuck); Flock flockOfMallards = new Flock(); IQuackable mallardOne = duckFactory.CreateMallardDuck(); IQuackable mallardTwo = duckFactory.CreateMallardDuck(); IQuackable mallardThree = duckFactory.CreateMallardDuck(); IQuackable mallardFour = duckFactory.CreateMallardDuck(); flockOfMallards.Add(mallardOne); flockOfMallards.Add(mallardTwo); flockOfMallards.Add(mallardThree); flockOfMallards.Add(mallardFour); flockOfDucks.Add(flockOfMallards); Console.WriteLine($"{System.Environment.NewLine}Duck Simulator: With Observer"); Quackologist quackologist = new Quackologist(); flockOfDucks.RegisterObserver(quackologist); Simulate(flockOfDucks); Console.WriteLine($"{System.Environment.NewLine}The ducks quacked {QuackCounter.NumberOfQuacks} times"); }
private void simulate(AbstractDuckFactory duckFactory) { IQuack redheadDuck = duckFactory.CreateRedheadDuck(); IQuack duckCall = duckFactory.CreateDuckCall(); IQuack rubberDuck = duckFactory.CreatRubberDuck(); IQuack gooseDuck = new GooseAdapter(new Goose()); Flock flockOfDucks = new Flock(); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); flockOfDucks.Add(gooseDuck); Flock flockOfMallards = new Flock(); IQuack mallardOne = duckFactory.CreateMallardDuck(); IQuack mallardTwo = duckFactory.CreateMallardDuck(); IQuack mallardThree = duckFactory.CreateMallardDuck(); IQuack mallardFour = duckFactory.CreateMallardDuck(); flockOfMallards.Add(mallardOne); flockOfMallards.Add(mallardTwo); flockOfMallards.Add(mallardThree); flockOfMallards.Add(mallardFour); flockOfDucks.Add(flockOfMallards); Console.WriteLine("\r\nDuck Simulator: With Observer"); Quacklogist quacklogist = new Quacklogist(); flockOfDucks.RegisterObserver(quacklogist); simulate(flockOfDucks); Console.WriteLine("The ducks quacked " + QuackCounter.GetQuacks + " times"); }