public static void TestChainOfResp() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { var handler = h1.HandleRequest(request, true); if (request >= 0 && request < 10) { Assert.AreEqual(h1, handler); } else if (request >= 10 && request < 20) { Assert.AreEqual(h2, handler); } else { Assert.AreEqual(h3, handler); } } }
public void Show() { var reqs = new List <int> { 2, 7, 23, 34, 4, 5, 8, 3 }; var h1 = new ConcreteHandler1(3); var h2 = new ConcreteHandler2(7); var h3 = new ConcreteHandler3(20); h1.SetHandler(h2); h2.SetHandler(h3); foreach (var req in reqs) { h1.Operation("operation is fired!", req); } }
private void ChainStart(object sender, RoutedEventArgs e) { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.Successor = h2; MessageBox.Show(h1.HandleRequest(2, "")); }
void Main() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.Successor = h2; h1.HandleRequest(2); }
public static void Display() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.Successor = h2; h1.HandleRequest(2); }
static void Main() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.SetSuccessor(h2); h1.HandleRequest(-1); h1.HandleRequest(1); }
static void Main(string[] args) { Handler handler1 = new ConcreteHandler1(); Handler handler2 = new ConcreteHandler2(); handler1.Successor = handler2; handler1.HandleRequest(1); handler1.HandleRequest(2); }
static void Main(string[] args) { AbstractHandler handler1 = new ConcreteHandler1(); AbstractHandler handler2 = new ConcreteHandler2(); AbstractHandler handler3 = new ConcreteHandler3(); handler1.Succsesor = handler2; //1->2 handler2.Succsesor = handler3; //2->3 //3-> ... handler1.RequestHandler(3); // request for handler3 // tree }
static void Main(string[] args) { IHandler handler = new ConcreteHandler1(); handler.Successor = new ConcreteHandler2(); handler.HandlerRequest("Question:What are you doing?"); handler.HandlerRequest("Answer:Coding all the night."); Console.Read(); }
public static void Test() { Handler concreteHandler1 = new ConcreteHandler1(); Handler concreteHandler2 = new ConcreteHandler2(); Handler concreteHandler3 = new ConcreteHandler3(); concreteHandler1.Successor = concreteHandler2; concreteHandler2.Successor = concreteHandler3; concreteHandler1.ProcessRequest(new object()); }
public static void Main() { Handler handlerChain = new ConcreteHandler1(new ConcreteHandler2(null)); IRequest request1 = new ConcreteRequest1(); handlerChain.HandleRequest(request1); IRequest request2 = new ConcreteRequest2(); handlerChain.HandleRequest(request2); }
public static void UnitTest() { ConcreteHandler3 theHandler3 = new ConcreteHandler3(null); ConcreteHandler2 theHandler2 = new ConcreteHandler2(theHandler3); ConcreteHandler1 theHandler1 = new ConcreteHandler1(theHandler2); theHandler1.HandleRequest(10); theHandler1.HandleRequest(15); theHandler1.HandleRequest(20); theHandler1.HandleRequest(30); theHandler1.HandleRequest(100); }
private static void Main() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.Successor = h2; h1.HandleRequest(1); h1.HandleRequest(2); Console.ReadKey(); }
// void UnitTest() { // 建立Cost验证的连接方式 ConcreteHandler3 theHandle3 = new ConcreteHandler3(null); ConcreteHandler2 theHandle2 = new ConcreteHandler2(theHandle3); ConcreteHandler1 theHandle1 = new ConcreteHandler1(theHandle2); // 确认 theHandle1.HandleRequest(10); theHandle1.HandleRequest(15); theHandle1.HandleRequest(20); theHandle1.HandleRequest(30); theHandle1.HandleRequest(100); }
public static void ChainOfResponsibilityPattern() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler1(); Handler h3 = new ConcreteHandler1(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (var request in requests) { h1.HandleRequest(request); } Console.Read(); }
static void Main(string[] args) { //1 Profession p; p = new Profession(ProfessionSpeaker.StaticSpeaker); p(); ProfessionSpeaker s1 = new ProfessionSpeaker(); ProfessionSpeaker s2 = new ProfessionSpeaker(); Profession p1 = new Profession(s1.InstanceSpeaker); Profession p2 = new Profession(s2.InstanceSpeaker); p1(); p2(); Console.WriteLine("----------------------------------------------------------------------"); //2 DrawRoutine dr = new DrawRoutine(); dr.Break(); Console.WriteLine("----------------------------------------------------------------------"); //3 IHandler handler = new ConcreteHandler1(); PolyDel del = new PolyDel(handler.HandleRequest); del += new PolyDel(AlsoHandler); del(); Console.WriteLine("----------------------------------------------------------------------"); //4 BookKeeper ho = new HomeOwner(); UtilityCo uc = new UtilityCo(); uc.BeginBilling(ho); }
static void Main(string[] args) { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } Console.ReadKey(); }
public static void Main(string[] args) { // Structure Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.SetSuccessor(h2); int[] request = { 3,4,10,12,3,7,13 }; foreach(int i in request) { h1.HandleRequest(i); } Console.Read(); }
public void ChainOfResponsibilityUsage() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } }
// void UnitTest () { // 建立Cost驗証的連接方式 ConcreteHandler3 theHandle3 = new ConcreteHandler3(null); ConcreteHandler2 theHandle2 = new ConcreteHandler2(theHandle3); ConcreteHandler1 theHandle1 = new ConcreteHandler1(theHandle2); // 確認 theHandle1.HandleRequest(10); theHandle1.HandleRequest(15); theHandle1.HandleRequest(20); theHandle1.HandleRequest(30); theHandle1.HandleRequest(100); }
public void StructuralTest() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } }
void Start() { // Setup Chain of Responsibility Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } }
public void TestChainOfResponsibility(int request) { var handler1 = new ConcreteHandler1(); var handler2 = new ConcreteHandler2(); var handler3 = new ConcreteHandler3(); handler1.Successor = handler2; handler2.Successor = handler3; handler1.HandleRequest(request); // OUTPUT: ConcreteHandler1 handled request: 1. // OUTPUT: ConcreteHandler2 handled request: 12. // OUTPUT: ConcreteHandler3 handled request: 23. }
static void Main(string[] args) { //职责链模式 Handler handler1 = new ConcreteHandler1(); Handler handler2 = new ConcreteHandler2(); Handler handler3 = new ConcreteHandler3(); handler1.SetSuccessor(handler2); handler2.SetSuccessor(handler3); int[] request = { 2, 6, 10, 15, 18, 20, 28, 29, 8, 5, 4 }; foreach (int item in request) { handler1.HandleRequest(item); } Console.WriteLine("*****************************************"); CommonManager jingli = new CommonManager("金立"); Majordomo zongjian = new Majordomo("张无忌"); GeneraManager zongjingli = new GeneraManager("张三丰"); jingli.SetSuperior(zongjian); zongjian.SetSuperior(zongjingli); jingli.RequestApploactions(new Request { Number = 1, RequestType = "请假", RequestContent = "请假一天" }); jingli.RequestApploactions(new Request { Number = 10, RequestType = "请假", RequestContent = "请假一天" }); jingli.RequestApploactions(new Request { Number = 500, RequestType = "加薪", RequestContent = "请求加薪" }); jingli.RequestApploactions(new Request { Number = 1000, RequestType = "加薪", RequestContent = "请求加薪" }); Console.Read(); }
static void Main(string[] args) { // Setup Chain of Responsibility Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } // Wait for user Console.Read(); }
/// <summary> /// Entry point into console application. /// </summary> static void Demo() { // Setup Chain of Responsibility Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.SetSuccessor(h2); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } // Wait for user Console.ReadKey(); }
static void Main() { var h1 = new ConcreteHandler1(); var h2 = new ConcreteHandler2(h1); var h3 = new ConcreteHandler3(h2); h3.HandleRequest(8); h3.HandleRequest(12); h3.HandleRequest(3); h3.HandleRequest(24); h3.HandleRequest(19); h3.HandleRequest(33); h3.HandleRequest(17); h3.HandleRequest(1); h3.HandleRequest(15); h3.HandleRequest(28); Console.ReadKey(); }
private static void callChainOfResponsibility() { Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.handleRequest(request); } // Wait for user Console.ReadKey(); }
static void ChainOfResponsibilityTester() { #region sample 1 // Setup Chain of Responsibility Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach (int request in requests) { h1.HandleRequest(request); } #endregion #region sample 2 // Setup Chain of Responsibility Approver larry = new Director(); Approver sam = new VicePresident(); Approver tammy = new President(); larry.SetSuccessor(sam); sam.SetSuccessor(tammy); // Generate and process purchase requests Purchase p = new Purchase(2034, 350.00, "Assets"); larry.ProcessRequest(p); p = new Purchase(2035, 32590.10, "Project X"); larry.ProcessRequest(p); p = new Purchase(2036, 122100.00, "Project Y"); larry.ProcessRequest(p); #endregion }
// Entry point into console application. static void Main() { // Setup Chain of Responsibility (top-down) Handler h4 = new ConcreteHandler4(); Handler h3 = new ConcreteHandler3(h4); Handler h2 = new ConcreteHandler2(); Handler h1 = new ConcreteHandler1(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate requests int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20, 3, 35, 50, 39, 42, 32 }; // Process requests foreach (int request in requests) { h1.HandleRequest(request); } // Wait for user Console.ReadKey(); }
//static Memento memento; //static string path = @"D:\text.txt"; static void Main(string[] args) { //var context = new Context(); //var list = new List<AbstractExpression>(); //list.Add(new TerminalExpression()); //list.Add(new NonterminalExpression()); //list.Add(new TerminalExpression()); //list.Add(new TerminalExpression()); //foreach (AbstractExpression exp in list) //{ // Console.WriteLine(exp.Interpret(context)); //} //// MEMENTO //File.WriteAllText(path,"pierwszy tekst"); //if (path != ""&& File.Exists(path)) //{ // memento = new Memento(path, File.ReadAllBytes(path)); //} //File.WriteAllText(path, "drugi tekst"); //memento.RevertFromMemento(); //File.WriteAllText(path, "trzeci tekst(do zapamietania)"); //memento.SetNewData(path); //File.WriteAllText(path, "czwarty tekst"); //memento.RevertFromMemento(); //STATE //var small = new SmallState(); //Contextt context = new Contextt(small); //Console.Read(); //context.Change(); //Console.Read(); //context.Change(); //Console.Read(); //context.Change(); ////STRATEGY //bool onceAgain = true; //while (onceAgain) //{ // Console.WriteLine("Wybierz postać: A,B,C"); // Console.WriteLine(); // ConsoleKeyInfo figure = Console.ReadKey(true); // IFigure ifigure = null; // switch (figure.Key) // { // case ConsoleKey.A: // ifigure = new Figure1(); // break; // case ConsoleKey.B: // ifigure = new Figure2(); // break; // case ConsoleKey.C: // ifigure = new Figure3(); // break; // } // Console.WriteLine($"Wybrałes postać: { figure.Key}"); // Console.WriteLine(ifigure.Kopnięcie()[0]); // Console.WriteLine(ifigure.Uderzenie()[0]); // Console.WriteLine(); // onceAgain = true; //} //ITERATOR //ConcreteIterable concreteIterable = new ConcreteIterable(); //concreteIterable[0] = 1; //concreteIterable[1] = 2; //concreteIterable[2] = 3; //IIterator iterator = concreteIterable.GetIterator(); //Console.WriteLine(iterator.First()); //while(!iterator.IsEnd()) //{ // Console.WriteLine(iterator.Next()); //} // OBSERVATOR //ConcreteSubject concreteSubject = new ConcreteSubject(); //concreteSubject.Attach(new ConcreteObserver(concreteSubject, "Pierwszy")); //concreteSubject.Attach(new ConcreteObserver(concreteSubject, "Drugi")); //var third = new ConcreteObserver(concreteSubject, "trzeci"); //concreteSubject.Attach(third); //concreteSubject.SubjectState = "Super stan"; //concreteSubject.Notify(); //concreteSubject.Detach(third); //concreteSubject.Notify(); //Chain Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); int[] request = { 1, 2, 3, 10, 11, 22, 25 }; foreach (var item in request) { h3.HandleRequest(item); } Console.Read(); }
static void Main(string[] args) { #region Creational //-Factory Method- Developer dev = new PanelDeveloper("ООО КирпичСтрой"); House house2 = dev.Create(); dev = new WoodDeveloper("Частный застройщик"); House house = dev.Create(); //-Abstract Factory- GofPatterns.Creational.Hero elf = new GofPatterns.Creational.Hero(new ElfFactory()); elf.Hit(); elf.Run(); GofPatterns.Creational.Hero voin = new GofPatterns.Creational.Hero(new VoinFactory()); voin.Hit(); voin.Run(); //-Singleton- Computer comp = new Computer(); comp.Launch("Windows 8.1"); Console.WriteLine(comp.OS.Name); // у нас не получится изменить ОС, так как объект уже создан comp.OS = OS.getInstance("Windows 10"); //-Prototype- IFigure figure = new Rectangle(30, 40); IFigure clonedFigure = figure.Clone(); figure.GetInfo(); clonedFigure.GetInfo(); figure = new Circle(30); clonedFigure = figure.Clone(); figure.GetInfo(); clonedFigure.GetInfo(); //-Builder- // содаем объект пекаря Baker baker = new Baker(); // создаем билдер для ржаного хлеба BreadBuilder builder = new RyeBreadBuilder(); // выпекаем Bread ryeBread = baker.Bake(builder); Console.WriteLine(ryeBread.ToString()); // оздаем билдер для пшеничного хлеба builder = new WheatBreadBuilder(); Bread wheatBread = baker.Bake(builder); Console.WriteLine(wheatBread.ToString()); #endregion #region Behavioral //-Strategy- Car auto = new Car(4, "Volvo", new PetrolMove()); auto.Move(); auto.Movable = new ElectricMove(); auto.Move(); //-Observer- Stock stock = new Stock(); Bank bank = new Bank("ЮнитБанк", stock); Broker broker = new Broker("Иван Иваныч", stock); // имитация торгов stock.Market(); // брокер прекращает наблюдать за торгами broker.StopTrade(); // имитация торгов stock.Market(); //-Strategy- Pult pult = new Pult(); TV tv = new TV(); pult.SetCommand(new TVOnCommand(tv)); pult.PressButton(); pult.PressUndo(); Microwave microwave = new Microwave(); // 5000 - время нагрева пищи pult.SetCommand(new MicrowaveCommand(microwave, 5000)); pult.PressButton(); //-Iterator- Library library = new Library(); Reader reader = new Reader(); reader.SeeBooks(library); //-State- Water water = new Water(new LiquidWaterState()); water.Heat(); water.Frost(); water.Frost(); //-ChainOfResponsibility- Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.Successor = h2; h1.HandleRequest(2); //-Interpreter- Context context = new Context(); // определяем набор переменных int x = 5; int y = 8; int z = 2; // добавляем переменные в контекст context.SetVariable("x", x); context.SetVariable("y", y); context.SetVariable("z", z); // создаем объект для вычисления выражения x + y - z IExpression expression = new SubtractExpression( new AddExpression( new NumberExpression("x"), new NumberExpression("y") ), new NumberExpression("z") ); int result = expression.Interpret(context); Console.WriteLine("результат: {0}", result); //-Mediator- ManagerMediator mediator = new ManagerMediator(); Colleague customer = new CustomerColleague(mediator); Colleague programmer = new ProgrammerColleague(mediator); Colleague tester = new TesterColleague(mediator); mediator.Customer = customer; mediator.Programmer = programmer; mediator.Tester = tester; customer.Send("Есть заказ, надо сделать программу"); programmer.Send("Программа готова, надо протестировать"); tester.Send("Программа протестирована и готова к продаже"); //-Memento- GofPatterns.Behavioral.Hero hero = new GofPatterns.Behavioral.Hero(); hero.Shoot(); // делаем выстрел, осталось 9 патронов GameHistory game = new GameHistory(); game.History.Push(hero.SaveState()); // сохраняем игру hero.Shoot(); //делаем выстрел, осталось 8 патронов hero.RestoreState(game.History.Pop()); hero.Shoot(); //делаем выстрел, осталось 8 патронов //-Visitor- var structure = new Bank1(); structure.Add(new Person { Name = "Иван Алексеев", Number = "82184931" }); structure.Add(new Company { Name = "Microsoft", RegNumber = "ewuir32141324", Number = "3424131445" }); structure.Accept(new HtmlVisitor()); structure.Accept(new XmlVisitor()); #endregion #region Structural //-Decorator- Pizza pizza1 = new ItalianPizza(); pizza1 = new TomatoPizza(pizza1); // итальянская пицца с томатами Console.WriteLine("Название: {0}", pizza1.Name); Console.WriteLine("Цена: {0}", pizza1.GetCost()); Pizza pizza2 = new ItalianPizza(); pizza2 = new CheesePizza(pizza2);// итальянская пиццы с сыром Console.WriteLine("Название: {0}", pizza2.Name); Console.WriteLine("Цена: {0}", pizza2.GetCost()); Pizza pizza3 = new BulgerianPizza(); pizza3 = new TomatoPizza(pizza3); pizza3 = new CheesePizza(pizza3);// болгарская пиццы с томатами и сыром Console.WriteLine("Название: {0}", pizza3.Name); Console.WriteLine("Цена: {0}", pizza3.GetCost()); //-Adapter- // путешественник Driver driver = new Driver(); // машина Auto auto1 = new Auto(); // отправляемся в путешествие driver.Travel(auto1); // встретились пески, надо использовать верблюда Camel camel = new Camel(); // используем адаптер ITransport camelTransport = new CamelToTransportAdapter(camel); // продолжаем путь по пескам пустыни driver.Travel(camelTransport); //-Facade- TextEditor textEditor = new TextEditor(); Compiller compiller = new Compiller(); CLR clr = new CLR(); VisualStudioFacade ide = new VisualStudioFacade(textEditor, compiller, clr); Programmer programmer1 = new Programmer(); programmer1.CreateApplication(ide); //-Composite- Component fileSystem = new Directory("Файловая система"); // определяем новый диск Component diskC = new Directory("Диск С"); // новые файлы Component pngFile = new File("12345.png"); Component docxFile = new File("Document.docx"); // добавляем файлы на диск С diskC.Add(pngFile); diskC.Add(docxFile); // добавляем диск С в файловую систему fileSystem.Add(diskC); // выводим все данные fileSystem.Print(); Console.WriteLine(); // удаляем с диска С файл diskC.Remove(pngFile); // создаем новую папку Component docsFolder = new Directory("Мои Документы"); // добавляем в нее файлы Component txtFile = new File("readme.txt"); Component csFile = new File("Program.cs"); docsFolder.Add(txtFile); docsFolder.Add(csFile); diskC.Add(docsFolder); fileSystem.Print(); //-Proxy- using (IBook book = new BookStoreProxy()) { // читаем первую страницу Page page1 = book.GetPage(1); Console.WriteLine(page1.Text); // читаем вторую страницу Page page2 = book.GetPage(2); Console.WriteLine(page2.Text); // возвращаемся на первую страницу page1 = book.GetPage(1); Console.WriteLine(page1.Text); } //-Bridge- // создаем нового программиста, он работает с с++ Programmer1 freelancer = new FreelanceProgrammer(new CPPLanguage()); freelancer.DoWork(); freelancer.EarnMoney(); // пришел новый заказ, но теперь нужен c# freelancer.Language = new CSharpLanguage(); freelancer.DoWork(); freelancer.EarnMoney(); //-Flyweight- double longitude = 37.61; double latitude = 55.74; HouseFactory houseFactory = new HouseFactory(); for (int i = 0; i < 5; i++) { House1 panelHouse = houseFactory.GetHouse("Panel"); if (panelHouse != null) { panelHouse.Build(longitude, latitude); } longitude += 0.1; latitude += 0.1; } for (int i = 0; i < 5; i++) { House1 brickHouse = houseFactory.GetHouse("Brick"); if (brickHouse != null) { brickHouse.Build(longitude, latitude); } longitude += 0.1; latitude += 0.1; } #endregion }
public static void Main( string[] args ) { // Setup Chain of Responsibility Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); Handler h3 = new ConcreteHandler3(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate and process request int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 }; foreach( int request in requests ) h1.HandleRequest( request ); Console.Read(); }
// Entry point into console application. static void Main() { // Setup Chain of Responsibility (top-down) Handler h4 = new ConcreteHandler4(); Handler h3 = new ConcreteHandler3(h4); Handler h2 = new ConcreteHandler2(); Handler h1 = new ConcreteHandler1(); h1.SetSuccessor(h2); h2.SetSuccessor(h3); // Generate requests int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20, 3, 35, 50, 39, 42, 32 }; // Process requests foreach (int request in requests) h1.HandleRequest(request); // Wait for user Console.ReadKey(); }
static void Main(string[] args) { #region 工厂方法 double total = 0.0d; CashContext cc = new CashContext(new CashNormal()); total = cc.GetResult(100.04); cc = new CashContext(new CashRebate("0.8")); total = cc.GetResult(100.04); Console.WriteLine(total); #endregion #region 装饰器方法 Decorator.Component person = new Decorator.Component("xiaocai"); Tshirt tshirt = new Tshirt(); BigTrouser bt = new BigTrouser(); bt.Decorator(person); tshirt.Decorator(bt); tshirt.show(); Console.WriteLine("*****************************"); #endregion #region 代理方法 SchoolGirl sg = new SchoolGirl(); sg.Name = "李娇骄"; Proxy.Proxy daili = new Proxy.Proxy(sg); daili.GiveDolls(); daili.GiveFlowers(); #endregion #region 原型模式 ConcretePrototype1 p1 = new ConcretePrototype1("123"); ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone(); Console.WriteLine("Cloned :"+c1.Id); Resume a = new Resume("Andy"); a.setInfo("Man", "24"); a.setWorkExperience("1998-2005","IBM "); Resume b = (Resume)a.Clone(); b.setWorkExperience("2002-2005", "Dell"); a.display(); b.display(); #endregion #region 模板模式 Console.WriteLine("Student A testPaper:"); TestPaperA testA = new TestPaperA(); testA.Test1(); testA.Test2(); Console.WriteLine("Student B testPaper:"); TestPaperB testB = new TestPaperB(); testB.Test1(); testB.Test2(); #endregion #region 抽象工厂方法 User user = new User(); IFactory factory = new SqlServerFactory(); IUser iu = factory.CreateUser(); //IUser riu = (IUser)Assembly.Load("AbstractFactory").CreateInstance("SqlserverUser"); //反射 //Assembly.Load("程序集名称").CreateInstance("程序集名称.类名称"); iu.Insert(user); iu.GetUser(1); #endregion #region Facade 外观模式 Fund jijin = new Fund(); jijin.BuyFund(); jijin.sellFund(); #endregion #region 建造者模式 Director director = new Director(); abstractBuilder builder1 = new Builder1(); abstractBuilder builder2 = new BuilderB(); director.Construct(builder1); Builder.Builder b1 = builder1.getBuilder(); b1.show(); director.Construct(builder2); Builder.Builder b2 = builder2.getBuilder(); b2.show(); #endregion #region 观察者模式 Observer.ConcreteSubject s = new Observer.ConcreteSubject(); s.Attach(new Observer.ConcreteObserver(s, "x")); s.Attach(new Observer.ConcreteObserver(s, "y")); s.SubjectState = "ABC"; s.Notify(); ///下面是使用委托 ///委托就是一种引用方法的类型。一旦为委托分配了方法,委托将于该方法具有完全相同的行为。 ///委托方法的使用可以像其他的方法一样具有参数和返回值。委托可以看作是对函数的抽象,是函数的”类“,委托的实例将代表一个具体的函数 ///一个委托可以搭载多个方法,所有方法被依次唤起,委托搭载的方法不需要属于同一个类,只需要具有相同的原型和形式,也就是拥有相同的参数列表和返回类型。 ///在使用带参数的委托时,只需要在声明事件的地方将参数传递给事件。在绑定时将调用的方法绑定给事件。 Bosscs boss = new Bosscs(); StockObserver tongshi1 = new StockObserver("tongshi1",boss); NBAObserver tongshiNBA = new NBAObserver("tongshiNBA", boss); boss.Update += new EventHandler1(tongshi1.CloseStockMarket); boss.Update += new EventHandler1(tongshiNBA.CloseStockMarket); boss.update2 += new EventHandler2(tongshiNBA.print); boss.SubjectState = " I am back "; boss.Notify(); #endregion #region 状态模式 State.Context c = new State.Context(new CreateStateA()); c.Request(); c.Request(); c.Request(); c.Request(); #endregion #region 备忘录模式 Originator o = new Originator(); o.State = "On"; o.Show(); Caretaker care = new Caretaker(); care.Memento = o.CreateMemento(); o.State = "Off"; o.Show(); o.SetMemento(care.Memento); o.Show(); GameRole gameRole = new GameRole(); gameRole.GetInitState(); gameRole.StateDisplay(); RoleStateManager stateManager = new RoleStateManager(); stateManager.Memento = gameRole.SaveState(); gameRole.Fight(); gameRole.StateDisplay(); gameRole.RecoveryState(stateManager.Memento); gameRole.StateDisplay(); #endregion #region 组合模式 Composite.Composite root = new Composite.Component("root"); root.Add(new Leaf("Leaf A")); root.Add(new Leaf("Leaf B")); Composite.Composite comp = new Composite.Component("comp X"); comp.Add(new Leaf("Leaf XA")); comp.Add(new Leaf("Leaf XB")); root.Add(comp); Composite.Composite comp2 = new Composite.Component("Comp X2"); comp2.Add(new Leaf("Leaf X2A")); comp2.Add(new Leaf("Leaf X2B")); comp.Add(comp2); root.Add(new Leaf("Leaf C")); Leaf leaf = new Leaf("Leaf D"); root.Add(leaf); root.Display(1); root.Remove(leaf); root.Display(1); #endregion #region 迭代器模式 ConCreteAggregate aggregate = new ConCreteAggregate(); aggregate[0] = "大鸟"; aggregate[1] = "小菜"; aggregate[2]="行李"; aggregate[3] = "老外"; aggregate[4] = "小偷"; Iterator.Iterator myIterator = new ConCreteIterator(aggregate); object item = myIterator.First(); while (!myIterator.IsDone()) { Console.WriteLine(myIterator.CurrentItem() + "请买车票"); myIterator.Next(); } #endregion #region 单例模式 //所有类都有构造方法,不编码则默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。只要将构造方法改写为私有的,外部的程序就不能通过new 来初始化它。 //通过一个共有的方法来返回类的实例。 Singleton.Singleton s1 = Singleton.Singleton.GetInstance(); Singleton.Singleton s2 = Singleton.Singleton.GetInstance(); if (s1 == s2) { Console.WriteLine("两个对象是相同的实例。"); } #endregion #region 命令模式 Receiver r = new Receiver(); Command.Command command = new Command.ConcreteCommand(r); Invoker invoker = new Invoker(); invoker.SetCommand(command); invoker.ExecuteCommand(); #endregion #region 职责链模式 Handler h1 = new ConcreteHandler1(); Handler h2 = new ConcreteHandler2(); h1.SetSuccessor(h2); int[] requests = { 2, 3, 4, 5, 6, 12, 34, 11, 15 }; foreach (int request in requests) { h1.HandlerRequest(request); } #endregion #region 中介者模式 ConcreteMediator mediator = new ConcreteMediator(); ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator); ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator); mediator.Colleague1 = colleague1; mediator.Colleague2 = colleague2; colleague1.Send("吃饭了吗?"); colleague2.Send("还没有呢"); #endregion #region 享元模式 int extri = 22; FlyweightFactory f = new FlyweightFactory(); Flyweight.Flyweight fx = f.GetFlyweight("X"); fx.Operation(--extri); Flyweight.Flyweight fy = f.GetFlyweight("Y"); fy.Operation(--extri); Flyweight.Flyweight fz = f.GetFlyweight("Z"); fz.Operation(--extri); #endregion #region 解释器模式 <<<<<<< HEAD Interpreter.Context context = new Interpreter.Context(); IList<Interpreter.AbstractExpression> list = new List<Interpreter.AbstractExpression>(); list.Add(new Interpreter.TerminalExpression()); list.Add(new Interpreter.NormalExpression()); foreach (Interpreter.AbstractExpression exp in list) exp.Interpret(context); ======= Interpreter.Context context1 = new Interpreter.Context(); IList<AbstractExpression> list = new List<AbstractExpression>(); list.Add(new TerminalExpression()); list.Add(new NonTerminalExpression()); foreach (AbstractExpression exp in list) { exp.Interpreter(context1); } #endregion #region 访问者模式 ObjectStructure os = new ObjectStructure(); os.Add(new Man()); os.Add(new Woman()); Success v1 = new Success(); os.Display(v1); Failing f1 = new Failing(); os.Display(f1); Amativeness a1 = new Amativeness(); os.Display(a1); >>>>>>> 77e342ef6e96917a8dc01e72e41626dcffd4ba13 #endregion Console.Read(); }