From 43c2d9f7144f2c68878ccdf5c72f214f220d7839 Mon Sep 17 00:00:00 2001 From: raw34 Date: Fri, 14 Oct 2022 09:08:23 +0800 Subject: [PATCH 1/4] feat: add php examples --- .gitignore | 4 + .../php/abstract_factory/AbstractFactory.md | 11 +++ .../php/abstract_factory/AbstractFactory.png | Bin 0 -> 70539 bytes .../abstract_factory/AbstractFactoryTest.php | 53 ++++++++++++ examples/php/abstract_factory/Carpenter.php | 11 +++ examples/php/abstract_factory/Door.php | 8 ++ examples/php/abstract_factory/DoorFactory.php | 10 +++ .../abstract_factory/DoorFittingExpert.php | 8 ++ examples/php/abstract_factory/IronDoor.php | 11 +++ .../php/abstract_factory/IronDoorFactory.php | 16 ++++ examples/php/abstract_factory/Welder.php | 11 +++ examples/php/abstract_factory/WoodenDoor.php | 11 +++ .../abstract_factory/WoodenDoorFactory.php | 16 ++++ examples/php/adapter/Adapter.md | 11 +++ examples/php/adapter/Adapter.png | Bin 0 -> 37478 bytes examples/php/adapter/AdapterTest.php | 26 ++++++ examples/php/adapter/AfricanLion.php | 11 +++ examples/php/adapter/AsianLion.php | 11 +++ examples/php/adapter/Hunter.php | 11 +++ examples/php/adapter/Lion.php | 8 ++ examples/php/adapter/WildDog.php | 11 +++ examples/php/adapter/WildDogAdapter.php | 18 +++++ examples/php/bridge/About.php | 18 +++++ examples/php/bridge/AquaTheme.php | 11 +++ examples/php/bridge/Bridge.md | 11 +++ examples/php/bridge/Bridge.png | Bin 0 -> 48479 bytes examples/php/bridge/BridgeTest.php | 40 +++++++++ examples/php/bridge/Careers.php | 18 +++++ examples/php/bridge/DarkTheme.php | 11 +++ examples/php/bridge/LightTheme.php | 11 +++ examples/php/bridge/Theme.php | 8 ++ examples/php/bridge/WebPage.php | 9 +++ examples/php/builder/Builder.md | 11 +++ examples/php/builder/Builder.php | 22 +++++ examples/php/builder/Builder.png | Bin 0 -> 43578 bytes examples/php/builder/BuilderTest.php | 23 ++++++ examples/php/builder/BurgerBuilder.php | 47 +++++++++++ .../php/chain_of_responsibility/Account.php | 50 ++++++++++++ examples/php/chain_of_responsibility/Bank.php | 13 +++ .../php/chain_of_responsibility/Bitcoin.php | 13 +++ .../ChainOfResponsibility.md | 11 +++ .../ChainOfResponsibility.png | Bin 0 -> 53244 bytes .../ChainOfResponsibilityTest.php | 58 +++++++++++++ .../php/chain_of_responsibility/Paypal.php | 13 +++ examples/php/command/Bulb.php | 16 ++++ examples/php/command/Command.md | 11 +++ examples/php/command/Command.php | 10 +++ examples/php/command/Command.png | Bin 0 -> 46590 bytes examples/php/command/CommandTest.php | 31 +++++++ examples/php/command/RemoteControl.php | 11 +++ examples/php/command/TurnOff.php | 28 +++++++ examples/php/command/TurnOn.php | 28 +++++++ examples/php/composer.json | 16 ++++ examples/php/composite/Composite.md | 11 +++ examples/php/composite/Composite.png | Bin 0 -> 78099 bytes examples/php/composite/CompositeTest.php | 34 ++++++++ examples/php/composite/Designer.php | 36 +++++++++ examples/php/composite/Developer.php | 36 +++++++++ examples/php/composite/Employee.php | 12 +++ examples/php/composite/Organization.php | 24 ++++++ examples/php/decorator/Coffee.php | 9 +++ examples/php/decorator/Decorator.md | 11 +++ examples/php/decorator/Decorator.png | Bin 0 -> 48306 bytes examples/php/decorator/DecoratorTest.php | 45 +++++++++++ examples/php/decorator/MilkCoffee.php | 23 ++++++ examples/php/decorator/SimpleCoffee.php | 16 ++++ examples/php/decorator/VanillaCoffee.php | 23 ++++++ examples/php/decorator/WhipCoffee.php | 23 ++++++ examples/php/facade/Computer.php | 41 ++++++++++ examples/php/facade/ComputerFacade.php | 34 ++++++++ examples/php/facade/Facade.md | 7 ++ examples/php/facade/Facade.png | Bin 0 -> 45413 bytes examples/php/facade/FacadeTest.php | 21 +++++ .../php/factory_method/CommunityExecutive.php | 11 +++ examples/php/factory_method/Developer.php | 11 +++ .../php/factory_method/DevelopmentManager.php | 11 +++ examples/php/factory_method/FactoryMethod.md | 11 +++ examples/php/factory_method/FactoryMethod.png | Bin 0 -> 47511 bytes .../php/factory_method/FactoryMethodTest.php | 25 ++++++ examples/php/factory_method/HiringManager.php | 14 ++++ examples/php/factory_method/Interviewer.php | 8 ++ .../php/factory_method/MarketingManager.php | 11 +++ examples/php/flyweight/Flyweight.md | 11 +++ examples/php/flyweight/Flyweight.png | Bin 0 -> 34966 bytes examples/php/flyweight/FlyweightTest.php | 34 ++++++++ examples/php/flyweight/KarakTea.php | 9 +++ examples/php/flyweight/TeaMaker.php | 17 ++++ examples/php/flyweight/TeaShop.php | 29 +++++++ examples/php/interpreter/Interpreter.md | 10 +++ examples/php/interpreter/Interpreter.php | 1 + examples/php/iterator/Iterator.md | 11 +++ examples/php/iterator/Iterator.png | Bin 0 -> 71189 bytes examples/php/iterator/IteratorTest.php | 43 ++++++++++ examples/php/iterator/RadioStation.php | 18 +++++ examples/php/iterator/StationList.php | 58 +++++++++++++ examples/php/mediator/ChatRoom.php | 26 ++++++ examples/php/mediator/ChatRoomMediator.php | 8 ++ examples/php/mediator/Mediator.md | 11 +++ examples/php/mediator/Mediator.png | Bin 0 -> 48708 bytes examples/php/mediator/MediatorTest.php | 34 ++++++++ examples/php/mediator/User.php | 25 ++++++ examples/php/memento/Editor.php | 28 +++++++ examples/php/memento/EditorMemento.php | 18 +++++ examples/php/memento/Memento.md | 11 +++ examples/php/memento/Memento.png | Bin 0 -> 32049 bytes examples/php/memento/MementoTest.php | 53 ++++++++++++ examples/php/observer/EmploymentAgency.php | 28 +++++++ examples/php/observer/JobPost.php | 18 +++++ examples/php/observer/JobSeeker.php | 25 ++++++ examples/php/observer/Observable.php | 10 +++ examples/php/observer/Observer.md | 11 +++ examples/php/observer/Observer.php | 8 ++ examples/php/observer/Observer.png | Bin 0 -> 71287 bytes examples/php/observer/ObserverTest.php | 55 +++++++++++++ examples/php/prototype/Prototype.md | 11 +++ examples/php/prototype/Prototype.png | Bin 0 -> 29664 bytes examples/php/prototype/PrototypeTest.php | 33 ++++++++ examples/php/prototype/Sheep.php | 35 ++++++++ examples/php/proxy/Door.php | 9 +++ examples/php/proxy/LabDoor.php | 16 ++++ examples/php/proxy/Proxy.md | 11 +++ examples/php/proxy/Proxy.png | Bin 0 -> 37149 bytes examples/php/proxy/ProxyTest.php | 25 ++++++ examples/php/proxy/SecuredDoor.php | 32 ++++++++ examples/php/simple_factory/Door.php | 9 +++ examples/php/simple_factory/DoorFactory.php | 11 +++ examples/php/simple_factory/SimpleFactory.md | 11 +++ examples/php/simple_factory/SimpleFactory.png | Bin 0 -> 38838 bytes .../php/simple_factory/SimpleFactoryTest.php | 32 ++++++++ examples/php/simple_factory/WoodenDoor.php | 25 ++++++ examples/php/singleton/President.php | 32 ++++++++ examples/php/singleton/Singleton.md | 11 +++ examples/php/singleton/Singleton.png | Bin 0 -> 20558 bytes examples/php/singleton/SingletonTest.php | 23 ++++++ examples/php/state/DefaultText.php | 11 +++ examples/php/state/LowerCase.php | 11 +++ examples/php/state/State.md | 11 +++ examples/php/state/State.png | Bin 0 -> 41721 bytes examples/php/state/StateTest.php | 76 ++++++++++++++++++ examples/php/state/TextEditor.php | 23 ++++++ examples/php/state/UpperCase.php | 11 +++ examples/php/state/WritingState.php | 8 ++ examples/php/strategy/BubbleSortStrategy.php | 12 +++ examples/php/strategy/QuickSortStrategy.php | 12 +++ examples/php/strategy/SortStrategy.php | 8 ++ examples/php/strategy/Sorter.php | 18 +++++ examples/php/strategy/Strategy.md | 11 +++ examples/php/strategy/Strategy.png | Bin 0 -> 36040 bytes examples/php/strategy/StrategyTest.php | 29 +++++++ .../php/template_method/AndroidBuilder.php | 26 ++++++ examples/php/template_method/Builder.php | 22 +++++ examples/php/template_method/IosBuilder.php | 26 ++++++ .../php/template_method/TemplateMethod.md | 11 +++ .../php/template_method/TemplateMethod.png | Bin 0 -> 36065 bytes .../template_method/TemplateMethodTest.php | 40 +++++++++ examples/php/visitor/Animal.php | 8 ++ examples/php/visitor/AnimalOperation.php | 12 +++ examples/php/visitor/Dolphin.php | 16 ++++ examples/php/visitor/Jump.php | 21 +++++ examples/php/visitor/Lion.php | 16 ++++ examples/php/visitor/Monkey.php | 16 ++++ examples/php/visitor/Speak.php | 21 +++++ examples/php/visitor/Visitor.md | 11 +++ examples/php/visitor/Visitor.png | Bin 0 -> 69969 bytes examples/php/visitor/VisitorTest.php | 55 +++++++++++++ 165 files changed, 2812 insertions(+) create mode 100644 .gitignore create mode 100644 examples/php/abstract_factory/AbstractFactory.md create mode 100644 examples/php/abstract_factory/AbstractFactory.png create mode 100644 examples/php/abstract_factory/AbstractFactoryTest.php create mode 100644 examples/php/abstract_factory/Carpenter.php create mode 100644 examples/php/abstract_factory/Door.php create mode 100644 examples/php/abstract_factory/DoorFactory.php create mode 100644 examples/php/abstract_factory/DoorFittingExpert.php create mode 100644 examples/php/abstract_factory/IronDoor.php create mode 100644 examples/php/abstract_factory/IronDoorFactory.php create mode 100644 examples/php/abstract_factory/Welder.php create mode 100644 examples/php/abstract_factory/WoodenDoor.php create mode 100644 examples/php/abstract_factory/WoodenDoorFactory.php create mode 100644 examples/php/adapter/Adapter.md create mode 100644 examples/php/adapter/Adapter.png create mode 100644 examples/php/adapter/AdapterTest.php create mode 100644 examples/php/adapter/AfricanLion.php create mode 100644 examples/php/adapter/AsianLion.php create mode 100644 examples/php/adapter/Hunter.php create mode 100644 examples/php/adapter/Lion.php create mode 100644 examples/php/adapter/WildDog.php create mode 100644 examples/php/adapter/WildDogAdapter.php create mode 100644 examples/php/bridge/About.php create mode 100644 examples/php/bridge/AquaTheme.php create mode 100644 examples/php/bridge/Bridge.md create mode 100644 examples/php/bridge/Bridge.png create mode 100644 examples/php/bridge/BridgeTest.php create mode 100644 examples/php/bridge/Careers.php create mode 100644 examples/php/bridge/DarkTheme.php create mode 100644 examples/php/bridge/LightTheme.php create mode 100644 examples/php/bridge/Theme.php create mode 100644 examples/php/bridge/WebPage.php create mode 100644 examples/php/builder/Builder.md create mode 100644 examples/php/builder/Builder.php create mode 100644 examples/php/builder/Builder.png create mode 100644 examples/php/builder/BuilderTest.php create mode 100644 examples/php/builder/BurgerBuilder.php create mode 100644 examples/php/chain_of_responsibility/Account.php create mode 100644 examples/php/chain_of_responsibility/Bank.php create mode 100644 examples/php/chain_of_responsibility/Bitcoin.php create mode 100644 examples/php/chain_of_responsibility/ChainOfResponsibility.md create mode 100644 examples/php/chain_of_responsibility/ChainOfResponsibility.png create mode 100644 examples/php/chain_of_responsibility/ChainOfResponsibilityTest.php create mode 100644 examples/php/chain_of_responsibility/Paypal.php create mode 100644 examples/php/command/Bulb.php create mode 100644 examples/php/command/Command.md create mode 100644 examples/php/command/Command.php create mode 100644 examples/php/command/Command.png create mode 100644 examples/php/command/CommandTest.php create mode 100644 examples/php/command/RemoteControl.php create mode 100644 examples/php/command/TurnOff.php create mode 100644 examples/php/command/TurnOn.php create mode 100644 examples/php/composer.json create mode 100644 examples/php/composite/Composite.md create mode 100644 examples/php/composite/Composite.png create mode 100644 examples/php/composite/CompositeTest.php create mode 100644 examples/php/composite/Designer.php create mode 100644 examples/php/composite/Developer.php create mode 100644 examples/php/composite/Employee.php create mode 100644 examples/php/composite/Organization.php create mode 100644 examples/php/decorator/Coffee.php create mode 100644 examples/php/decorator/Decorator.md create mode 100644 examples/php/decorator/Decorator.png create mode 100644 examples/php/decorator/DecoratorTest.php create mode 100644 examples/php/decorator/MilkCoffee.php create mode 100644 examples/php/decorator/SimpleCoffee.php create mode 100644 examples/php/decorator/VanillaCoffee.php create mode 100644 examples/php/decorator/WhipCoffee.php create mode 100644 examples/php/facade/Computer.php create mode 100644 examples/php/facade/ComputerFacade.php create mode 100644 examples/php/facade/Facade.md create mode 100644 examples/php/facade/Facade.png create mode 100644 examples/php/facade/FacadeTest.php create mode 100644 examples/php/factory_method/CommunityExecutive.php create mode 100644 examples/php/factory_method/Developer.php create mode 100644 examples/php/factory_method/DevelopmentManager.php create mode 100644 examples/php/factory_method/FactoryMethod.md create mode 100644 examples/php/factory_method/FactoryMethod.png create mode 100644 examples/php/factory_method/FactoryMethodTest.php create mode 100644 examples/php/factory_method/HiringManager.php create mode 100644 examples/php/factory_method/Interviewer.php create mode 100644 examples/php/factory_method/MarketingManager.php create mode 100644 examples/php/flyweight/Flyweight.md create mode 100644 examples/php/flyweight/Flyweight.png create mode 100644 examples/php/flyweight/FlyweightTest.php create mode 100644 examples/php/flyweight/KarakTea.php create mode 100644 examples/php/flyweight/TeaMaker.php create mode 100644 examples/php/flyweight/TeaShop.php create mode 100644 examples/php/interpreter/Interpreter.md create mode 100644 examples/php/interpreter/Interpreter.php create mode 100644 examples/php/iterator/Iterator.md create mode 100644 examples/php/iterator/Iterator.png create mode 100644 examples/php/iterator/IteratorTest.php create mode 100644 examples/php/iterator/RadioStation.php create mode 100644 examples/php/iterator/StationList.php create mode 100644 examples/php/mediator/ChatRoom.php create mode 100644 examples/php/mediator/ChatRoomMediator.php create mode 100644 examples/php/mediator/Mediator.md create mode 100644 examples/php/mediator/Mediator.png create mode 100644 examples/php/mediator/MediatorTest.php create mode 100644 examples/php/mediator/User.php create mode 100644 examples/php/memento/Editor.php create mode 100644 examples/php/memento/EditorMemento.php create mode 100644 examples/php/memento/Memento.md create mode 100644 examples/php/memento/Memento.png create mode 100644 examples/php/memento/MementoTest.php create mode 100644 examples/php/observer/EmploymentAgency.php create mode 100644 examples/php/observer/JobPost.php create mode 100644 examples/php/observer/JobSeeker.php create mode 100644 examples/php/observer/Observable.php create mode 100644 examples/php/observer/Observer.md create mode 100644 examples/php/observer/Observer.php create mode 100644 examples/php/observer/Observer.png create mode 100644 examples/php/observer/ObserverTest.php create mode 100644 examples/php/prototype/Prototype.md create mode 100644 examples/php/prototype/Prototype.png create mode 100644 examples/php/prototype/PrototypeTest.php create mode 100644 examples/php/prototype/Sheep.php create mode 100644 examples/php/proxy/Door.php create mode 100644 examples/php/proxy/LabDoor.php create mode 100644 examples/php/proxy/Proxy.md create mode 100644 examples/php/proxy/Proxy.png create mode 100644 examples/php/proxy/ProxyTest.php create mode 100644 examples/php/proxy/SecuredDoor.php create mode 100644 examples/php/simple_factory/Door.php create mode 100644 examples/php/simple_factory/DoorFactory.php create mode 100644 examples/php/simple_factory/SimpleFactory.md create mode 100644 examples/php/simple_factory/SimpleFactory.png create mode 100644 examples/php/simple_factory/SimpleFactoryTest.php create mode 100644 examples/php/simple_factory/WoodenDoor.php create mode 100644 examples/php/singleton/President.php create mode 100644 examples/php/singleton/Singleton.md create mode 100644 examples/php/singleton/Singleton.png create mode 100644 examples/php/singleton/SingletonTest.php create mode 100644 examples/php/state/DefaultText.php create mode 100644 examples/php/state/LowerCase.php create mode 100644 examples/php/state/State.md create mode 100644 examples/php/state/State.png create mode 100644 examples/php/state/StateTest.php create mode 100644 examples/php/state/TextEditor.php create mode 100644 examples/php/state/UpperCase.php create mode 100644 examples/php/state/WritingState.php create mode 100644 examples/php/strategy/BubbleSortStrategy.php create mode 100644 examples/php/strategy/QuickSortStrategy.php create mode 100644 examples/php/strategy/SortStrategy.php create mode 100644 examples/php/strategy/Sorter.php create mode 100644 examples/php/strategy/Strategy.md create mode 100644 examples/php/strategy/Strategy.png create mode 100644 examples/php/strategy/StrategyTest.php create mode 100644 examples/php/template_method/AndroidBuilder.php create mode 100644 examples/php/template_method/Builder.php create mode 100644 examples/php/template_method/IosBuilder.php create mode 100644 examples/php/template_method/TemplateMethod.md create mode 100644 examples/php/template_method/TemplateMethod.png create mode 100644 examples/php/template_method/TemplateMethodTest.php create mode 100644 examples/php/visitor/Animal.php create mode 100644 examples/php/visitor/AnimalOperation.php create mode 100644 examples/php/visitor/Dolphin.php create mode 100644 examples/php/visitor/Jump.php create mode 100644 examples/php/visitor/Lion.php create mode 100644 examples/php/visitor/Monkey.php create mode 100644 examples/php/visitor/Speak.php create mode 100644 examples/php/visitor/Visitor.md create mode 100644 examples/php/visitor/Visitor.png create mode 100644 examples/php/visitor/VisitorTest.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dc9ed0d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.idea/ +examples/php/vendor +composer.lock +.phpunit.result.cache diff --git a/examples/php/abstract_factory/AbstractFactory.md b/examples/php/abstract_factory/AbstractFactory.md new file mode 100644 index 00000000..e2ac5427 --- /dev/null +++ b/examples/php/abstract_factory/AbstractFactory.md @@ -0,0 +1,11 @@ +# 抽象工厂模式 Abstract Factory + +## 概述 +> 通俗解释:工厂的工厂; 一个将单个但相关/从属的工厂分组在一起而没有指定其具体类别的工厂。 + +> 维基百科:抽象工厂模式提供了一种封装一组具有共同主题但没有指定其具体类的单个工厂的方法。 + +> 使用场景:当涉及到不那么简单的,存在相互依赖关系的创建逻辑时使用。 + +## 类图 +![](AbstractFactory.png) \ No newline at end of file diff --git a/examples/php/abstract_factory/AbstractFactory.png b/examples/php/abstract_factory/AbstractFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b1f397cea554e5f2e6a18753595cc7952af0e7 GIT binary patch literal 70539 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%0AneD1<4f|xni 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 CQmakeDoor(); +$expert = $woodenFactory->makeFittingExpert(); + +$door->getDescription(); // Output: I am a wooden door +$expert->getDescription(); // Output: I can only fit wooden doors + +// Iron door factory to get iron door and the relevant fitting expert + +// Same for Iron Factory +$ironFactory = new IronDoorFactory(); + +$door = $ironFactory->makeDoor(); +$expert = $ironFactory->makeFittingExpert(); + +$door->getDescription(); // Output: I am an iron door +$expert->getDescription(); // Output: I can only fit iron doors +*/ + +class AbstractFactoryTest extends TestCase +{ + public function test01(): void + { + $woodenFactory = new WoodenDoorFactory(); + + $door = $woodenFactory->makeDoor(); + $expert = $woodenFactory->makeFittingExpert(); + + self::assertEquals("I am a wooden door", $door->getDescription()); + self::assertEquals("I can only fit wooden doors", $expert->getDescription()); + } + + public function test02(): void + { + $ironFactory = new IronDoorFactory(); + + $door = $ironFactory->makeDoor(); + $expert = $ironFactory->makeFittingExpert(); + + self::assertEquals("I am an iron door", $door->getDescription()); + self::assertEquals("I can only fit iron doors", $expert->getDescription()); + } +} diff --git a/examples/php/abstract_factory/Carpenter.php b/examples/php/abstract_factory/Carpenter.php new file mode 100644 index 00000000..07947eb1 --- /dev/null +++ b/examples/php/abstract_factory/Carpenter.php @@ -0,0 +1,11 @@ + 通俗解释:适配器模式允许您在适配器中包装其他不兼容的对象,使其与另一个类兼容。 + +> 维基百科:在软件工程中,适配器模式是一种软件设计模式,它允许将现有类的接口用作另一个接口。它通常用于使现有类与其他类一起工作而无需修改其源代码。 + +> 使用场景:略。 + +## 类图 +![](Adapter.png) diff --git a/examples/php/adapter/Adapter.png b/examples/php/adapter/Adapter.png new file mode 100644 index 0000000000000000000000000000000000000000..2600d715a76ec7996a1002546975e7a04aa444bb GIT binary patch literal 37478 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 Gg8vIN`XyTc literal 0 HcmV?d00001 diff --git a/examples/php/adapter/AdapterTest.php b/examples/php/adapter/AdapterTest.php new file mode 100644 index 00000000..8bd5380a --- /dev/null +++ b/examples/php/adapter/AdapterTest.php @@ -0,0 +1,26 @@ +hunt($wildDogAdapter); +*/ + +class AdapterTest extends TestCase +{ + public function test01(): void + { + $wildDog = new WildDog(); + $wildDogAdapter = new WildDogAdapter($wildDog); + + $hunter = new Hunter(); + + self::assertEquals("WildDog: Bark!", $hunter->hunt($wildDogAdapter)); + } +} diff --git a/examples/php/adapter/AfricanLion.php b/examples/php/adapter/AfricanLion.php new file mode 100644 index 00000000..8c822462 --- /dev/null +++ b/examples/php/adapter/AfricanLion.php @@ -0,0 +1,11 @@ +roar(); + } +} diff --git a/examples/php/adapter/Lion.php b/examples/php/adapter/Lion.php new file mode 100644 index 00000000..b36eb17c --- /dev/null +++ b/examples/php/adapter/Lion.php @@ -0,0 +1,8 @@ +dog = $dog; + } + + public function roar(): string + { + return $this->dog->bark(); + } +} diff --git a/examples/php/bridge/About.php b/examples/php/bridge/About.php new file mode 100644 index 00000000..fcb0e820 --- /dev/null +++ b/examples/php/bridge/About.php @@ -0,0 +1,18 @@ +theme = $theme; + } + + public function getContent(): string + { + return "About page in " . $this->theme->getColor(); + } +} diff --git a/examples/php/bridge/AquaTheme.php b/examples/php/bridge/AquaTheme.php new file mode 100644 index 00000000..7f1a8b54 --- /dev/null +++ b/examples/php/bridge/AquaTheme.php @@ -0,0 +1,11 @@ + 通俗解释:桥接模式是关于优先于继承的组合。实现细节从层次结构推送到具有单独层次结构的另一个对象。 + +> 维基百科:桥接模式是软件工程中使用的设计模式,旨在“将抽象与其实现分离,以便两者可以独立变化”。 + +> 使用场景:略。 + +## 类图 +![](Bridge.png) \ No newline at end of file diff --git a/examples/php/bridge/Bridge.png b/examples/php/bridge/Bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0f4d12bd12b0fc09521014475e7d6b36e33d6f GIT binary patch literal 48479 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

4o0S$$9LS_%c&`v-O_TPu^G(7As-Mve@^v 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%0DP{dS@jexQc5L3azM$XURXV5ZM+_ zyxV;GS5->+kKWL}2W&en58$0MVhT>R`H631SXucp?GZ2fu-E=BnCIv|d89^MVbP&b z#wC=#^6K5KBQ6oMNmlZx9C_Q{Alt~=`ZI%@hb6XesNEe46V`+uCP5gMf6k3>el=oG zOdk@u3Q-Pvcy{=(ArP0$)T_?p*<}|&Pxm{OH8=&y6HcMszo%n&q~S&`4ss_DarvHLypJ}sKnq{lRCR(b zIzC$b{?S&As`hL-nvK;Q=fR-l_axK)D|?1BCo*?Vz~urqg*|vquO7&WEARTwR^*Pj5RT{h)m!rO9#$4Hwh`oEL% z(~1^;W%XWUdlcp-R{F>{H!Rz$gqrWJD+lGp^_Rot({SG}5>h#F0{|Nq;6{|otabXxi3_vM?1=L(PCvZ9=tY^n5LFaHNiC+`0M literal 0 HcmV?d00001 diff --git a/examples/php/composite/CompositeTest.php b/examples/php/composite/CompositeTest.php new file mode 100644 index 00000000..858bc379 --- /dev/null +++ b/examples/php/composite/CompositeTest.php @@ -0,0 +1,34 @@ +addEmployee($john); +$organization->addEmployee($jane); + +echo "Net salaries: " . $organization->getNetSalaries(); // Net Salaries: 27000 +*/ + +class CompositeTest extends TestCase +{ + public function test01(): void + { + $john = new Developer('John Doe', 12000); + $jane = new Designer('Jane Doe', 15000); + + $organization = new Organization(); + $organization->addEmployee($john); + $organization->addEmployee($jane); + + self::assertEquals(27000, $organization->getNetSalaries()); + } +} diff --git a/examples/php/composite/Designer.php b/examples/php/composite/Designer.php new file mode 100644 index 00000000..94ce16d8 --- /dev/null +++ b/examples/php/composite/Designer.php @@ -0,0 +1,36 @@ +name = $name; + $this->salary = $salary; + } + + public function getName(): string + { + return $this->name; + } + + public function setSalary(float $salary): void + { + $this->salary = $salary; + } + + public function getSalary(): float + { + return $this->salary; + } + + public function getRoles(): array + { + return $this->roles; + } +} diff --git a/examples/php/composite/Developer.php b/examples/php/composite/Developer.php new file mode 100644 index 00000000..55247394 --- /dev/null +++ b/examples/php/composite/Developer.php @@ -0,0 +1,36 @@ +name = $name; + $this->salary = $salary; + } + + public function getName(): string + { + return $this->name; + } + + public function setSalary(float $salary): void + { + $this->salary = $salary; + } + + public function getSalary(): float + { + return $this->salary; + } + + public function getRoles(): array + { + return $this->roles; + } +} diff --git a/examples/php/composite/Employee.php b/examples/php/composite/Employee.php new file mode 100644 index 00000000..69f90a28 --- /dev/null +++ b/examples/php/composite/Employee.php @@ -0,0 +1,12 @@ +employees[] = $employee; + } + + public function getNetSalaries(): float + { + $netSalary = 0; + + foreach ($this->employees as $employee) { + $netSalary += $employee->getSalary(); + } + + return $netSalary; + } +} diff --git a/examples/php/decorator/Coffee.php b/examples/php/decorator/Coffee.php new file mode 100644 index 00000000..15101d98 --- /dev/null +++ b/examples/php/decorator/Coffee.php @@ -0,0 +1,9 @@ + 通俗解释:装饰器模式允许您通过将对象包装在装饰器类的对象中来动态更改对象在运行时的行为。 + +> 维基百科:在面向对象的编程中,装饰器模式是一种设计模式,它允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为。装饰器模式通常用于遵守单一责任原则,因为它允许在具有独特关注区域的类之间划分功能。 + +> 使用场景:略。 + +## 类图 +![](Decorator.png) \ No newline at end of file diff --git a/examples/php/decorator/Decorator.png b/examples/php/decorator/Decorator.png new file mode 100644 index 0000000000000000000000000000000000000000..86691b4d4bdc9faa3286f66ea601b2ff508bc467 GIT binary patch literal 48306 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 literal 0 HcmV?d00001 diff --git a/examples/php/decorator/DecoratorTest.php b/examples/php/decorator/DecoratorTest.php new file mode 100644 index 00000000..7e3ca4a3 --- /dev/null +++ b/examples/php/decorator/DecoratorTest.php @@ -0,0 +1,45 @@ +getCost(); // 10 +echo $someCoffee->getDescription(); // Simple Coffee + +$someCoffee = new MilkCoffee($someCoffee); +echo $someCoffee->getCost(); // 12 +echo $someCoffee->getDescription(); // Simple Coffee, milk + +$someCoffee = new WhipCoffee($someCoffee); +echo $someCoffee->getCost(); // 17 +echo $someCoffee->getDescription(); // Simple Coffee, milk, whip + +$someCoffee = new VanillaCoffee($someCoffee); +echo $someCoffee->getCost(); // 20 +echo $someCoffee->getDescription(); // Simple Coffee, milk, whip, vanilla +*/ + +class DecoratorTest extends TestCase +{ + public function test01(): void + { + $someCoffee = new SimpleCoffee(); + self::assertEquals(10, $someCoffee->getCost()); + self::assertEquals('Simple Coffee', $someCoffee->getDescription()); + + $someCoffee = new MilkCoffee($someCoffee); + self::assertEquals(12, $someCoffee->getCost()); + self::assertEquals('Simple Coffee, milk', $someCoffee->getDescription()); + + $someCoffee = new WhipCoffee($someCoffee); + self::assertEquals(17, $someCoffee->getCost()); + self::assertEquals('Simple Coffee, milk, whip', $someCoffee->getDescription()); + + $someCoffee = new VanillaCoffee($someCoffee); + self::assertEquals(20, $someCoffee->getCost()); + self::assertEquals('Simple Coffee, milk, whip, vanilla', $someCoffee->getDescription()); + } +} diff --git a/examples/php/decorator/MilkCoffee.php b/examples/php/decorator/MilkCoffee.php new file mode 100644 index 00000000..b0efa3be --- /dev/null +++ b/examples/php/decorator/MilkCoffee.php @@ -0,0 +1,23 @@ +coffee = $coffee; + } + + public function getCost(): float + { + return $this->coffee->getCost() + 2; + } + + public function getDescription(): string + { + return $this->coffee->getDescription() . ', milk'; + } +} diff --git a/examples/php/decorator/SimpleCoffee.php b/examples/php/decorator/SimpleCoffee.php new file mode 100644 index 00000000..7d5e05c4 --- /dev/null +++ b/examples/php/decorator/SimpleCoffee.php @@ -0,0 +1,16 @@ +coffee = $coffee; + } + + public function getCost(): float + { + return $this->coffee->getCost() + 3; + } + + public function getDescription(): string + { + return $this->coffee->getDescription() . ', vanilla'; + } +} diff --git a/examples/php/decorator/WhipCoffee.php b/examples/php/decorator/WhipCoffee.php new file mode 100644 index 00000000..553af305 --- /dev/null +++ b/examples/php/decorator/WhipCoffee.php @@ -0,0 +1,23 @@ +coffee = $coffee; + } + + public function getCost(): float + { + return $this->coffee->getCost() + 5; + } + + public function getDescription(): string + { + return $this->coffee->getDescription() . ', whip'; + } +} diff --git a/examples/php/facade/Computer.php b/examples/php/facade/Computer.php new file mode 100644 index 00000000..ed5ae691 --- /dev/null +++ b/examples/php/facade/Computer.php @@ -0,0 +1,41 @@ +computer = $computer; + } + + public function turnOn(): string + { + return sprintf( + '%s %s %s %s', + $this->computer->getElectricShock(), + $this->computer->makeSound(), + $this->computer->showLoadingScreen(), + $this->computer->bam() + ); + } + + public function turnOff(): string + { + return sprintf( + '%s %s %s', + $this->computer->closeEverything(), + $this->computer->pullCurrent(), + $this->computer->sooth() + ); + } +} diff --git a/examples/php/facade/Facade.md b/examples/php/facade/Facade.md new file mode 100644 index 00000000..8adc781e --- /dev/null +++ b/examples/php/facade/Facade.md @@ -0,0 +1,7 @@ +# 外观模式 Facade + +> 通俗解释:外观模式为复杂的子系统提供了简化的界面。 + +> 维基百科:外观是一个为更大的代码体提供简化的接口的对象,例如一个类库。 + +> 使用场景:略。 diff --git a/examples/php/facade/Facade.png b/examples/php/facade/Facade.png new file mode 100644 index 0000000000000000000000000000000000000000..a73846fe31c1a10d8933d5b650963deaf815766c GIT binary patch literal 45413 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 literal 0 HcmV?d00001 diff --git a/examples/php/facade/FacadeTest.php b/examples/php/facade/FacadeTest.php new file mode 100644 index 00000000..a699a667 --- /dev/null +++ b/examples/php/facade/FacadeTest.php @@ -0,0 +1,21 @@ +turnOn(); // Ouch! Beep beep! Loading.. Ready to be used! +$computer->turnOff(); // Bup bup buzzz! Haah! Zzzzz +*/ + +class FacadeTest extends TestCase +{ + public function test01(): void + { + $computer = new ComputerFacade(new Computer()); + self::assertEquals('Ouch! Beep beep! Loading.. Ready to be used!', $computer->turnOn()); + self::assertEquals('Bup bup bup buzzzz! Haaah! Zzzzz', $computer->turnOff()); + } +} diff --git a/examples/php/factory_method/CommunityExecutive.php b/examples/php/factory_method/CommunityExecutive.php new file mode 100644 index 00000000..d41ba073 --- /dev/null +++ b/examples/php/factory_method/CommunityExecutive.php @@ -0,0 +1,11 @@ + 通俗解释:它提供了一种将实例化逻辑委托给子类的方法。 + +> 维基百科:在基于类的编程中,工厂方法模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而无需指定将要创建的对象的确切类。这是通过调用工厂方法来创建对象来完成的 - 在接口中指定并由子类实现,或者在基类中实现并可选地由派生类覆盖 - 而不是通过调用构造函数。 + +> 使用场景:在类中有一些通用处理但在运行时动态决定所需的子类时很有用。换句话说,当客户端不知道它可能需要什么样的子类时。 + +## 类图 +![](FactoryMethod.png) diff --git a/examples/php/factory_method/FactoryMethod.png b/examples/php/factory_method/FactoryMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..56b7371c96200f0cf0e3c10284ac6130e7d9eef6 GIT binary patch literal 47511 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 // Output: Asking about design patterns. + +$marketingManager = new MarketingManager(); +$marketingManager->takeInterview(); // Output: Asking about community building. +*/ + +class FactoryMethodTest extends TestCase +{ + public function test01(): void + { + $devManager = new DevelopmentManager(); + self::assertEquals('Asking about design patterns.', $devManager->takeInterview()); + + $marketingManager = new MarketingManager(); + self::assertEquals('Asking about community building.', $marketingManager->takeInterview()); + } +} diff --git a/examples/php/factory_method/HiringManager.php b/examples/php/factory_method/HiringManager.php new file mode 100644 index 00000000..f23e870f --- /dev/null +++ b/examples/php/factory_method/HiringManager.php @@ -0,0 +1,14 @@ +makeInterviewer()->askQuestions(); + } +} diff --git a/examples/php/factory_method/Interviewer.php b/examples/php/factory_method/Interviewer.php new file mode 100644 index 00000000..ecee32f1 --- /dev/null +++ b/examples/php/factory_method/Interviewer.php @@ -0,0 +1,8 @@ + 通俗解释:它用于通过尽可能多地与类似对象共享来最小化内存使用或计算开销。 + +> 维基百科:在计算机编程中,享元是一种软件设计模式。享元是一个通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象; 当一个简单重复的表示会使用不可接受的内存量时,它是一种大量使用对象的方法。 + +> 使用场景:略。 + +## 类图 +![](Flyweight.png) \ No newline at end of file diff --git a/examples/php/flyweight/Flyweight.png b/examples/php/flyweight/Flyweight.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0edf570624f54198365820e275cd6fe65617f6 GIT binary patch literal 34966 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 literal 0 HcmV?d00001 diff --git a/examples/php/flyweight/FlyweightTest.php b/examples/php/flyweight/FlyweightTest.php new file mode 100644 index 00000000..bb87ffcc --- /dev/null +++ b/examples/php/flyweight/FlyweightTest.php @@ -0,0 +1,34 @@ +takeOrder('less sugar', 1); +$shop->takeOrder('more milk', 2); +$shop->takeOrder('without sugar', 5); + +$shop->serve(); +// Serving tea to table# 1 +// Serving tea to table# 2 +// Serving tea to table# 5 +*/ + +class FlyweightTest extends TestCase +{ + public function test01(): void + { + $teaMaker = new TeaMaker(); + $shop = new TeaShop($teaMaker); + + $shop->takeOrder('less sugar', 1); + $shop->takeOrder('more milk', 2); + $shop->takeOrder('without sugar', 5); + + self::assertEquals("Serving tea to table 1...\nServing tea to table 2...\nServing tea to table 5...\n", $shop->serve()); + } +} diff --git a/examples/php/flyweight/KarakTea.php b/examples/php/flyweight/KarakTea.php new file mode 100644 index 00000000..2f877668 --- /dev/null +++ b/examples/php/flyweight/KarakTea.php @@ -0,0 +1,9 @@ +availableTea[$preference])) { + $this->availableTea[$preference] = new KarakTea(); + } + + return $this->availableTea[$preference]; + } +} diff --git a/examples/php/flyweight/TeaShop.php b/examples/php/flyweight/TeaShop.php new file mode 100644 index 00000000..07d71b31 --- /dev/null +++ b/examples/php/flyweight/TeaShop.php @@ -0,0 +1,29 @@ +teaMaker = $teaMaker; + } + + public function takeOrder(string $teaType, int $table): void + { + $this->orders[$table] = $this->teaMaker->make($teaType); + } + + public function serve(): string + { + $output = ''; + foreach ($this->orders as $table => $tea) { + $output .= "Serving tea to table {$table}...\n"; + } + + return $output; + } +} diff --git a/examples/php/interpreter/Interpreter.md b/examples/php/interpreter/Interpreter.md new file mode 100644 index 00000000..c0333060 --- /dev/null +++ b/examples/php/interpreter/Interpreter.md @@ -0,0 +1,10 @@ +# 解释器模式 Interpreter + +## 概述 +> 通俗解释: + +> 维基百科: + +> 使用场景: + +## 类图 diff --git a/examples/php/interpreter/Interpreter.php b/examples/php/interpreter/Interpreter.php new file mode 100644 index 00000000..a8143662 --- /dev/null +++ b/examples/php/interpreter/Interpreter.php @@ -0,0 +1 @@ + 通俗解释:它提供了一种访问对象元素而不暴露底层表示的方法。 + +> 维基百科:在面向对象的编程中,迭代器模式是一种用于遍历容器并访问容器的元素的设计模式。迭代器模式将算法与容器分离; 在某些情况下,算法必然是特定于容器的,因此不能解耦。 + +> 使用场景:略。 + +## 类图 +![](Iterator.png) \ No newline at end of file diff --git a/examples/php/iterator/Iterator.png b/examples/php/iterator/Iterator.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3a9ec54ec99632d923d59cb98e0c3ec7a3e690 GIT binary patch literal 71189 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 EOjxdqW`Fc>P z60~{ZR>Vyh-#H$}PR0ZY6|XSrrGUC1kZWZ5=C0Kg7rh5!gpiIr5j$kvvE#|_Do1yv z>(O=ZZ{Lp+UtfgH6w2X@NHTpq9s)|7PpyUQE+dC6M&8VBh;JLU4g%(;#))meSK1L6 z7-(Z5=(yVxuv77CTkPqrnwmkttnPWwru>ln>I|JtsZ0fq#fABCd(P%bRs8kK1X~8i z8_YPsAIZzkewW@&X~a%axITQJ<7qzVK;ah~~LJc*(vOm;R)F=BE)Y*`uddhK>8&QZi}gu#&B+GZtY}b&J9>Q&EJj9W+`(bIJ$2D%QDAQ-j555Xfok9^5Cp*RcpOyDbMpZF;QdF!(F5d*TxjR^eKA|%Vg3sBH2KT^;RTLxes9OD zrQ1kS-Oe~H(BJJ^ZuWk!_NWsqD;{|gw)2$?gYFil+a9aV9CU!QAN7)x{kwB1b2B`o z{SL!d?<)IL|J@Aew4iowhsWxIYzyazDjRc5-#Sc=(8YCDgeCEL4G;-maSN8}m+T}` z5e8F1Ih;p;*hK+!PW94ML2Wx7zdQrZ5iEr3u-pIXp$>%|oN=MqLd%|Gm;yRPX&J4xLoENPbH-<0-<8t`SVk2{6jahFE2+& zWoD!+p~*RcjvPIis-yZ2u9EaMe50FkZwVj&Pu;fmrvtWsv<%7zdbg{V2>UkIi5wGj zXkw7N8QB5GT}CT(x){o?j|&5sm2`B06_c37+k7e^VL@5`t`!K@Pi!gN_OXD}evbE{=-Hq&0$0EMgy{Y17uvr&7 z(5tyHAf&4i;WWRU5~ZYKU%1INLEp_`GeGR?w7*DW@4b5v;H`9c!DRMNT%$p`-1`Z0 z_>Nfj2hy{D0NCEXjpUS z+&kNi&BUMfb5^JhA)KL)tO)Zj_e#mAL(Qj0hH@-^ed|B9*7pOmuxol>i4%*}B0oaO zN4-8OZWHbxL(UlvS?Ld5s&HC>P|)W%?YTGJeA;8E3j>GI)!Y~Xx_*b&KDUl=*t}S8 z=o(PwCUw2KF>+py~(?EKDw`1g@>J3aUWRx|{RVn+{(mX|HI&mViI-k2*+ zQzaoGaSv!+M2ptdSFj|ZJA+{`t2OFq!)k8k8R$W-i$(kd0bd#A(|jT;9Q{{ri|x%d zmALcUGkjFYy4aWm=1t!t5oyWLB=*<||BP(R&MqrK#jVzs%@r4M+`KX*=NCRgJd!}0s?@U18C(KvWVC5G|2T7!E8YX6FfGkUgQ z{&+q#U;+{9CLiT8tuotUJ$L+(f7B@3h_*(A<|j@VHgH|-vndU8#b0-XZ+pl%6B#ZR z`-n$LUzU@GMT@LWf=S+D2@ z%AfGt;0An+j)+qoFfXHF{1Zs%56!|P4cwGJOb1u7NLrkHsI>=z_S`%vP?joohGb#f z3cKzz|7FP2lJH8)?Mv%zr*f;QxW^0VtkCdujB;w4= zoc0Pc`}utq2QMD$cb5Bp?GkQbVinIxo&*cV>9{bLu1J%dNnT_$5YOP?VHME>`IXgR z10M_5?>88Sb%}A}JxNPr8YBOy_UD}YqOM^9j})@<1z#id|34r6zdIhDcL0?95MSMg&jYr9ux8>Lf|9^}0syo__W#=t1&l-?Q8=x1c}z=t z*P$t78&r2MGl4i# zBO#(*YxbbOV+Jer23)C^KvL>I&cVp2PTA}Ig!drs?|&qAYBv7ud;{TA{8swTj&rK; z=#piWL}-`O6|6|VXU4i2y<1y9+#M*cZrqs~bzPF!$@KDD0A{N&P&#s7*jbfC7w*rq znjvXW9LS0qW`;L}cTOxHy%4qc3;cbu569{___;BwEf;;F@~_n?I(PcGHD!s2cUAg4N zES$w3Nronc=vlD4`gQB{Sq6JdiDtW>1CPhR@4ou{LSw7)~6e<%x4|Jd*O%LV69bc&?YD7+GR*uwUpA4RRLm74v?!;L*l^NbQ99VWSf_V z3RG~zddHXesO$kg@>y*=XFz`LO~n~Y$UeQQcS)LR$bJ?87I{zoKDyPAa{X~& z07%_Hns1BO9dfxw6G%>T~ zRRil$74uPOwW2DXq?&FJP%ey5AQq~4oks16V>~~m3yTV~AW34e$0FcgI99b-4yM}E zY1cHTX7a^Pc%IYih1{|J`_5LncuG^9M^l!OXpf-vPQD8+867pd(0CWrH}SyW@v03O z?>=uM)UNhw~is*x6{GHa{vaOp+7rizL<(r zf1j7j7;3ew}DTdO(&CGz3rrrR%>FVtMD(`31Wr8OI*Gc zXOBU5Xlt8B5kC;OjpD4)_wkB2W?*3X?#^Gh;SrG=6-FsMy?cZqN;9i;32cR8cS)0= z=bicD$bq4eZq?+Xe1(wxoLtfZk*?zEx1!JU{|5ClxP{dZld4f_FA_#4?dmfEPRM{o zv?N8=l-4g0W6%RLp`p%e=Ze~uN`EuvJ|9C zHnuNdlTQjhd8MJ3#*ln{o9El$P|n2A=q?K;+O31w>Bgml0QlA5FsIlCtmkm{IFV#$ zbk_55u~?Q-`09i&2FUo3ada0lMxH%sKuZIYe@Wt#qvyJSe`I0!xkS@FopQ6}EeOVL z1;>`pX!G<|2h7xk?o3ZbuyihkVr0Gzv1eGbxGh!|qFP?9`byT8o?FjutqJ@m%mB!C z9YP{#y=n%(6`|&XQ9rdDj{@t7eE`#sN>cb*yRMP0KKxYJ9Yn10);1;nyv}7l@@rkt zAuW2PsC{)=$FFtUff})R;E1sd{gpxpQW^1lqg0{#toabSbcdlEe-!YTh>gukW$V3=d4?ZvZIcLF zeY#YjZ*tmYQUL&&eoDl9_8o3B7L_PuYdG< zrI-@ccw`*ua@rBXaXHkBxATa^GPZ(92^@Z&Vl)%a7pLVG%mIky#h{-0WO|fc3u1vR zLY3RjVY+6QUKKrvXl7#A_40Lc-ZYfExK;Ma3EM>s^8+|awU3JGigDa~EZ(Uh@&zKO zRhqiowogDjxhhuk_sjs?b$!ZYGAL0gvIWJC!FLC{Aw2mYo)Iph=jj|}lxY`0>*GQc zoU}@tE*2D^#5o;BXP_q6+LVJUGVEMe;I6j!QQ2nNA%;p2r$)E#-6tN67_vt9U!fZc zdfKA1Yy*Fs6?PT< zl}6C$<;ojk8uhM+VFqtUf08HGo|^{TTKGmFf?LEMm09jWsOybUNc<=dpxR_!+rFV9 z5}6id!KPpS+;Yi8_9AL_H|*AY{78-tChfe}Htbk^d^Yd{Cj>$&aw7CI5((zXDi8Ju zj#CPRd7~Z>$m@L+D}yGH3=$i0pLS0~9MmNs)ppW;MISYnF&n*0l6Z(LLCE3sHDVy3 zYe+!FA_TZ&1H``zrg)df8f0;r5Fh!yY-fvTNb>eqFeSZ#gPSeL!ifu4L%bbX1cV_G z21l1o`}rAM)|%2?6%()8V;&db!z6FUkbMFLmrc%3??5_qwzDN#wCT4<9h74E>DOWF zQ3l8$*99VdU7Z%qPIjx8%qq@1?_K#Ut#k;zU+_Xv&PkJ=Z+^_5-LxR1kHV6aW4$b8 zt&ww%JYz_7O&TtynB9)u$A|f2Rk}`2-M;hnzZN{zJGRPPMQgc|I3JG2m9bx+nS2TO zoOa`JH~mDgeRKAv*0tAEl3Dg79~+a-Zr+i$8G=oLG{f zY-o=|#LZSn;WOAp8}gjIQCPVzLi7iOQk~GF4sH+3UkY%=W0ef?{*ybI^Na05Ys+my; znv4kR&{v4T9P3uFn|?d;S^nH9xb@zZj^+)BtTcs^T`X#+uOo?V?G@DRd`f;wrod)q z$&394P3~{%3)UO_rT#FXZ$sf{@RzC{SG!=f-PoU=n;s)b#Xug?FK{Cb`o;MHIv@?i z1l7-uCPMsG1rouY02@Q>J;GfW8hHC(i?=m>H;vGpYS+DTJ4yKp+-iWamoe7$MsKTl z=e|sQ=9~@jck?(~W;lNQAQ2q+Rq>g2S0}12MfJ03;FCj<-7Hlb!ong}L`tyW-l`lq34yjFEeWDPbWS zdxKxuWVqf*_Jcq3A{=YKhlS+?1XLYEQYtvO_$c<}bo}ywBM##evYC||ma zot%#u-drtJ!Y0rR>qHAY75x~yv=k}Z~n)82OSyp}Wcd|B;vlF}9ewiFs{ zBKR?eWc9)d>`p*|`yWaFNum@dC7w}*z-3ZUA}SlZ5peC{-Obj{pfAi6&sk87Gk3g6 zH3p8JH}4!jt3V&&XUxx^%(e59HB%Uxy9J=&VrJ6_t)XW-@SRo*F0^$w5FtZ(9EObO zMTJ8`o+8#aslZyr7cSV60c@A9=yKUy6&{6#%E+vsPRNpo$^nQ@zZWOukp7*LM{4{B zYQ7oxZSeH&kbi7JoJ&Oo)1D=WBwW)KIoOXr5eB|DM=H$;8 zcd9U5Yp%aWlJJH0{>Xny+si_`RXWlcDRucWxUGuQN|o=x{lD0^~ z4FxM5TGgDI(=gSrEekQ2H2}i3g;Vg0my0oD`x44u(gK?hf2Xu^?JGRCU-2L-6_#Lw zdmK#R$#ic8K(0a#f88uI>fa6=f|J2@G!zp1v%vJ*XQG=Pd*dBn>*iq8T(0i>r{VZ_ zRWf~}Mke?kVh@(OD1lVe1?_B>Mw1rFL4A1Xrlx_yPsKJAoD8thuXO0VVi#0KNm){5 zAsZ_P>U=6TKFkP<_3at5d~)nek-sz~c$pdcBIRO!WK9vTpMi zzCixjI)I-xt*=6mi-p%nIP)JBW2^pEe$G(N@%Rq7Hm6ymuxNLV(g@PRm~gPX7f#C_ zROgq|qMTTnzO(PearZHh!1u9;%dbZ<%sQ6;_cC93{_ch_rjM%Bz&q@1A^dt+9h@sXXLj^*>CZMc*H5 zwoOVW%@RVvM>b$xNXpV9j*?~5g^eE5F#dV2pn>#_nM}WjAOGz1CF6=7(JMD6I%64l zu_>BqQ)h_3q?V_7-kK?z*p;ZRvt{09G&6E@G)ZLA%U0Je*Hk;fqSot#p0C*$cni|E5J?l|~Sh>N|7?VFgyR+MJ}c@mXUH4ieC`SWF` z9D=y``t_?DR^y#&+u^+NaX@~BT9i=*>nMMgQJ3vRL|N+WuBqn4B|ojEWo$kXW{3F0 z!!#wPAJkuO=c}#J)6mPyQc~$khfjH_i9>-h(@P%Z%MF07TwlVFqdHO+>g8NHUcQNv2>vWG_{WJam5p4k=D4P zEXX5VxIX=nn5#Lq%+D-QJXT9V85Gc-z}mK0SG8G-_cvC9-1D72UpF*w6L4yeepsB)c|rWydlUNgoZjW;x>o)Aq2tJZ z1g!0pQ;V;djJ`_W;DpcW}d#>IyuZIB!Bo5R(6UHNJJXeIGJ^rn0$s z1Nsd%{=?Oq8xJqV&?I3Wji_R5&45fYG_{H`gCQyznrUZv9KOd|Lc(( z1{dFV|4VB6{`J+4pkN)0GZxn8C;wV`h2t4+6Pnc6YdAjRZxt!dhwBZO7yREx`h6l| zHnXLEHZ1QSVW<{Qi9^UJUzu|fT7chRaxC_n5g9po1`{^5{q}Z?Swwn%ya-bhg~aYfp1e-1RR~cbv zKGInKA2ao?oQM!{ku~ox&dFUwed5*cp8i{|oE7j;1~5h7;n--s)5uSWvY%lZiWLpp z)v{u0b#)ktV8<#hgBVmXjc1e9l;M@4a`_iAIXOzD>!p%{&g0Yf#K>@Xyi^+u2Ge=W z;Djvk{FJj2D9`Fnia|Yu_}AgC8MV}11+NE1fJ@!NCwQ8+;e9k7v6_FHfhiABIk-v8 zm~851c#8xmz!J%kJHjsUn?j~%WBa@4vnHZS^%Nj*xKZoT*GTRt^**Fy0c5>7_FSN@ z7+YF*K&%$LtMOk-MtrS7SIc)Bm1W!T7r5HbtT7L~Y7l_||5I6*2Pg{%EZdkF zI#E z;9i`veHNi%%sBKM)k7tA)O6f6h@oQhdktE)PPxvRFOH&GA;NIu}ZS9nW4xPAx%x%B!vfMapinW9?&F!mT z3=k0|Pc*T7lZ&nrOfZ;LzW0^g`q1BW0>yYIJK|;6j|gdv(j6X0f_=CO1rUSt$09DK zqjU5L!6TR8DXob(HXz3VgvZ3v3uReGKR9euxTlQ(?eDF3=-Omc!DR5S>fL_x1^iEi zGrAKV^w@wvyF*W?=T3pRJ0nB*wD)<$1C`ilqi?(9$>`xxjN|>O%PT;kf4`+Rv^vnny>*XXE4{xAu;=Iv-ta2w;+>qFJ#d)$RoX ziJ_?p5sHHL4W#j-bY4&;%Y6<}asfXQ(IYWGB8kD8r#U42JKly!q1z0i6Yhe@=ITK!|N0eC;*va+}hD2E5>ML=OP4nz z%*6MR=HHc+-sMAcB{~+euTMk(DpL)O!37qfk zL5~Z5`0{;fTCOI3-Z|I-E+D;wX9``&1{n0GqWRlHdcYTE%|}^TSeIDMBP)gkqO1Y= zW19vKUk~-wrHq{LaQz_rKq!xC#&0KN%gGP^B1w5!(D;DyR=MEf>hx|M5FH&ads}QwglmyanNhHhuE+z1_yv8xodK z;6MaVKR{4(d~`@C9xw6h*u|>|#Kc0;yMT=qb59i88dafZFR85lk5fh6E${`q8raj%0ARzwQ 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 literal 0 HcmV?d00001 diff --git a/examples/php/iterator/IteratorTest.php b/examples/php/iterator/IteratorTest.php new file mode 100644 index 00000000..94da1ae4 --- /dev/null +++ b/examples/php/iterator/IteratorTest.php @@ -0,0 +1,43 @@ +addStation(new RadioStation(89)); +$stationList->addStation(new RadioStation(101)); +$stationList->addStation(new RadioStation(102)); +$stationList->addStation(new RadioStation(103.2)); + +foreach($stationList as $station) { + echo $station->getFrequency() . PHP_EOL; +} + +$stationList->removeStation(new RadioStation(89)); // Will remove station 89 +*/ + +class IteratorTest extends TestCase +{ + public function test01(): void + { + $stationList = new StationList(); + + $stationList->addStation(new RadioStation(89)); + $stationList->addStation(new RadioStation(101)); + $stationList->addStation(new RadioStation(102)); + $stationList->addStation(new RadioStation(103.2)); + + self::assertEquals(4, $stationList->count()); + + $expect = [89, 101, 102, 103.2]; + foreach($stationList as $key => $station) { + self::assertEquals($expect[$key], $station->getFrequency()); + } + + $stationList->removeStation(new RadioStation(89)); + self::assertEquals(3, $stationList->count()); + } +} diff --git a/examples/php/iterator/RadioStation.php b/examples/php/iterator/RadioStation.php new file mode 100644 index 00000000..0f2bbfaa --- /dev/null +++ b/examples/php/iterator/RadioStation.php @@ -0,0 +1,18 @@ +frequency = $frequency; + } + + public function getFrequency(): float + { + return $this->frequency; + } +} diff --git a/examples/php/iterator/StationList.php b/examples/php/iterator/StationList.php new file mode 100644 index 00000000..a6d13f1c --- /dev/null +++ b/examples/php/iterator/StationList.php @@ -0,0 +1,58 @@ +stations[] = $station; + } + + public function removeStation(RadioStation $toRemove): void + { + $toRemoveFrequency = $toRemove->getFrequency(); + $this->stations = array_filter($this->stations, function (RadioStation $station) use ($toRemoveFrequency) { + return $station->getFrequency() !== $toRemoveFrequency; + }); + } + + public function count(): int + { + return count($this->stations); + } + + public function current(): RadioStation + { + return $this->stations[$this->counter]; + } + + public function key(): int + { + return $this->counter; + } + + public function next(): void + { + $this->counter++; + } + + public function rewind(): void + { + $this->counter = 0; + } + + public function valid(): bool + { + return isset($this->stations[$this->counter]); + } +} diff --git a/examples/php/mediator/ChatRoom.php b/examples/php/mediator/ChatRoom.php new file mode 100644 index 00000000..5e116da2 --- /dev/null +++ b/examples/php/mediator/ChatRoom.php @@ -0,0 +1,26 @@ +getTime(); + $sender = $user->getName(); + + return $time . ' [' . $sender . ']: ' . $message; + } + + public function setTime(string $time): void + { + $this->time = $time; + } + + private function getTime(): string + { + return $this->time ? : date('M d, H:i'); + } +} diff --git a/examples/php/mediator/ChatRoomMediator.php b/examples/php/mediator/ChatRoomMediator.php new file mode 100644 index 00000000..b8e5bd8d --- /dev/null +++ b/examples/php/mediator/ChatRoomMediator.php @@ -0,0 +1,8 @@ + 通俗解释:Mediator 模式添加第三方对象(称为中介者)来控制两个对象(称为同事)之间的交互。它有助于减少彼此通信的类之间的耦合。因为现在他们不需要了解彼此的实现。 + +> 维基百科:在软件工程中,中介模式定义了一个对象,该对象封装了一组对象的交互方式。由于它可以改变程序的运行行为,因此这种模式被认为是一种行为模式。 + +> 使用场景:略。 + +## 类图 +![](Mediator.png) \ No newline at end of file diff --git a/examples/php/mediator/Mediator.png b/examples/php/mediator/Mediator.png new file mode 100644 index 0000000000000000000000000000000000000000..10e9fece13012ea3372dd69d1cb6fa1d2da3ef61 GIT binary patch literal 48708 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'Hi there!'); +$jane->send('Hey!'); + +// Output will be +// Feb 14, 10:58 [John]: Hi there! +// Feb 14, 10:58 [Jane]: Hey! +*/ + +class MediatorTest extends TestCase +{ + public function test01(): void + { + $mediator = new ChatRoom(); + $mediator->setTime('Feb 14, 10:58'); + + $john = new User('John', $mediator); + $jane = new User('Jane', $mediator); + + self::assertEquals('Feb 14, 10:58 [John]: Hi there!', $john->send('Hi there!')); + self::assertEquals('Feb 14, 10:58 [Jane]: Hey!',$jane ->send('Hey!')); + } +} diff --git a/examples/php/mediator/User.php b/examples/php/mediator/User.php new file mode 100644 index 00000000..cfa3fe2e --- /dev/null +++ b/examples/php/mediator/User.php @@ -0,0 +1,25 @@ +name = $name; + $this->chatMediator = $chatMediator; + } + + public function getName(): string + { + return $this->name; + } + + public function send(string $message): string + { + return $this->chatMediator->showMessage($this, $message); + } +} diff --git a/examples/php/memento/Editor.php b/examples/php/memento/Editor.php new file mode 100644 index 00000000..f7d0a644 --- /dev/null +++ b/examples/php/memento/Editor.php @@ -0,0 +1,28 @@ +content .= ' ' . $words; + } + + public function getContent(): string + { + return $this->content; + } + + public function save(): EditorMemento + { + return new EditorMemento($this->content); + } + + public function restore(EditorMemento $memento): void + { + $this->content = $memento->getContent(); + } +} diff --git a/examples/php/memento/EditorMemento.php b/examples/php/memento/EditorMemento.php new file mode 100644 index 00000000..d012f660 --- /dev/null +++ b/examples/php/memento/EditorMemento.php @@ -0,0 +1,18 @@ +content = $content; + } + + public function getContent(): string + { + return $this->content; + } +} diff --git a/examples/php/memento/Memento.md b/examples/php/memento/Memento.md new file mode 100644 index 00000000..8379e036 --- /dev/null +++ b/examples/php/memento/Memento.md @@ -0,0 +1,11 @@ +# 备忘录模式 Memento + +## 概述 +> 通俗解释:备忘录模式是关于获取和存储对象的当前状态,以一种能够用平滑方式恢复的方式。 + +> 维基百科:备忘录模式是一种软件设计模式,它提供将对象恢复到其先前状态的能力(通过回滚撤消)。 + +> 使用场景:略。 + +## 类图 +![](Memento.png) \ No newline at end of file diff --git a/examples/php/memento/Memento.png b/examples/php/memento/Memento.png new file mode 100644 index 0000000000000000000000000000000000000000..ea70f3da644dfdb1a6b333e9f13dc30f1b04dc26 GIT binary patch literal 32049 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 Z>8Q_YrH^kB0vF>zin3~tOQcPM{ufnc{Zjw{ literal 0 HcmV?d00001 diff --git a/examples/php/memento/MementoTest.php b/examples/php/memento/MementoTest.php new file mode 100644 index 00000000..453857ed --- /dev/null +++ b/examples/php/memento/MementoTest.php @@ -0,0 +1,53 @@ +type('This is the first sentence.'); +$editor->type('This is second.'); + +// Save the state to restore to : This is the first sentence. This is second. +$saved = $editor->save(); + +// Type some more +$editor->type('And this is third.'); + +// Output: Content before Saving +echo $editor->getContent(); // This is the first sentence. This is second. And this is third. + +// Restoring to last saved state +$editor->restore($saved); + +$editor->getContent(); // This is the first sentence. This is second. +*/ + +class MementoTest extends TestCase +{ + public function test01(): void + { + $editor = new Editor(); + + // Type some stuff + $editor->type('This is the first sentence.'); + $editor->type('This is second.'); + + // Save the state to restore to : This is the first sentence. This is second. + $saved = $editor->save(); + + // Type some more + $editor->type('And this is third.'); + + // Output: Content before Saving + self::assertEquals(' This is the first sentence. This is second. And this is third.', $editor->getContent()); + + // Restoring to last saved state + $editor->restore($saved); + + self::assertEquals(' This is the first sentence. This is second.', $editor->getContent()); + } +} diff --git a/examples/php/observer/EmploymentAgency.php b/examples/php/observer/EmploymentAgency.php new file mode 100644 index 00000000..e6882918 --- /dev/null +++ b/examples/php/observer/EmploymentAgency.php @@ -0,0 +1,28 @@ +observers as $observer) { + $observer->update($jobPost); + } + } + + public function attach(Observer $observer): void + { + $this->observers[] = $observer; + } + + public function detach(Observer $observer): void + { + $key = array_search($observer, $this->observers, true); + if ($key !== false) { + unset($this->observers[$key]); + } + } +} diff --git a/examples/php/observer/JobPost.php b/examples/php/observer/JobPost.php new file mode 100644 index 00000000..310b48f9 --- /dev/null +++ b/examples/php/observer/JobPost.php @@ -0,0 +1,18 @@ +title = $title; + } + + public function getTitle(): string + { + return $this->title; + } +} diff --git a/examples/php/observer/JobSeeker.php b/examples/php/observer/JobSeeker.php new file mode 100644 index 00000000..d002eeae --- /dev/null +++ b/examples/php/observer/JobSeeker.php @@ -0,0 +1,25 @@ +name = $name; + } + + public function update(JobPost $jobPost): void + { + // Do something with the job posting + $this->lastNotice = 'Hi ' . $this->name . '! New job posted: ' . $jobPost->getTitle(); + } + + public function getLastNotice(): string + { + return $this->lastNotice; + } +} diff --git a/examples/php/observer/Observable.php b/examples/php/observer/Observable.php new file mode 100644 index 00000000..85668e12 --- /dev/null +++ b/examples/php/observer/Observable.php @@ -0,0 +1,10 @@ + 通俗解释:定义对象之间的依赖关系,以便每当对象更改其状态时,都会通知其所有依赖项。 + +> 维基百科:观察者模式是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并在有任何状态变化时自动通知它们,常通过调用它们的某个方法。 + +> 使用场景:略。 + +## 类图 +![](Observer.png) \ No newline at end of file diff --git a/examples/php/observer/Observer.php b/examples/php/observer/Observer.php new file mode 100644 index 00000000..d5d3bfc5 --- /dev/null +++ b/examples/php/observer/Observer.php @@ -0,0 +1,8 @@ +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 +$jobPostings->attach($janeDoe); + +// Add a new job and see if subscribers get notified +$jobPostings->addJob(new JobPost('Software Engineer')); + +// Output +// Hi John Doe! New job posted: Software Engineer +// Hi Jane Doe! New job posted: Software Engineer +*/ + +class ObserverTest extends TestCase +{ + public function test01(): void + { + // Create subscribers + $johnDoe = new JobSeeker('John Doe'); + $janeDoe = new JobSeeker('Jane Doe'); + + // Create publisher and attach subscribers + $jobPostings = new EmploymentAgency(); + $jobPostings->attach($johnDoe); + $jobPostings->attach($janeDoe); + + // Add a new job and see if subscribers get notified + $jobPostings->notify(new JobPost('Software Engineer')); + + // Output + self::assertEquals('Hi John Doe! New job posted: Software Engineer', $johnDoe->getLastNotice()); + self::assertEquals('Hi Jane Doe! New job posted: Software Engineer', $janeDoe->getLastNotice()); + + + // Detach a subscriber + $jobPostings->detach($janeDoe); + + // Add a new job and see if subscribers get notified + $jobPostings->notify(new JobPost('Engineering Manager')); + + self::assertEquals('Hi John Doe! New job posted: Engineering Manager', $johnDoe->getLastNotice()); + self::assertEquals('Hi Jane Doe! New job posted: Software Engineer', $janeDoe->getLastNotice()); + } +} diff --git a/examples/php/prototype/Prototype.md b/examples/php/prototype/Prototype.md new file mode 100644 index 00000000..418d02a8 --- /dev/null +++ b/examples/php/prototype/Prototype.md @@ -0,0 +1,11 @@ +# 原型模式 Prototype + +## 概述 +> 通俗解释:通过克隆现有对象创建对象。 + +> 维基百科:原型模式是软件开发中的一种创建型的设计模式。当要创建的对象类型由原型实例确定时使用它,该实例被克隆以生成新对象。 + +> 使用场景:当需要一个与现有对象类似的对象时,或者与克隆相比,创建的成本会很高。 + +## 类图 +![](Prototype.png) \ No newline at end of file diff --git a/examples/php/prototype/Prototype.png b/examples/php/prototype/Prototype.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4bc6c5d990e7f9d4ea4dde44e0d4af112df53a GIT binary patch literal 29664 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

CbLBL%9FkY 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 literal 0 HcmV?d00001 diff --git a/examples/php/prototype/PrototypeTest.php b/examples/php/prototype/PrototypeTest.php new file mode 100644 index 00000000..a3c1a16f --- /dev/null +++ b/examples/php/prototype/PrototypeTest.php @@ -0,0 +1,33 @@ +getName(); // Jolly +echo $original->getCategory(); // Mountain Sheep + +// Clone and modify what is required +$cloned = clone $original; +$cloned->setName('Dolly'); +echo $cloned->getName(); // Dolly +echo $cloned->getCategory(); // Mountain sheep +*/ + +class PrototypeTest extends TestCase +{ + public function test01(): void + { + $original = new Sheep('Jolly'); + self::assertEquals('Jolly', $original->getName()); + self::assertEquals('Mountain Sheep', $original->getCategory()); + + // Clone and modify what is required + $cloned = clone $original; + $cloned->setName('Dolly'); + self::assertEquals('Dolly', $cloned->getName()); + self::assertEquals('Mountain Sheep', $cloned->getCategory()); + } +} diff --git a/examples/php/prototype/Sheep.php b/examples/php/prototype/Sheep.php new file mode 100644 index 00000000..80d49fbe --- /dev/null +++ b/examples/php/prototype/Sheep.php @@ -0,0 +1,35 @@ +name = $name; + $this->category = $category; + } + + public function setName(string $name): void + { + $this->name = $name; + } + + public function getName(): string + { + return $this->name; + } + + public function setCategory(string $category): void + { + $this->category = $category; + } + + public function getCategory(): string + { + return $this->category; + } +} diff --git a/examples/php/proxy/Door.php b/examples/php/proxy/Door.php new file mode 100644 index 00000000..4b369c6d --- /dev/null +++ b/examples/php/proxy/Door.php @@ -0,0 +1,9 @@ + 通俗解释:使用代理模式,一个类表示另一个类的功能。 + +> 维基百科:代理最一般的形式,是一个充当其他东西的接口的类。代理是一个包装器或代理对象,用来被客户端调用以访问幕后的提供服务的真实对象。使用代理可以简单地转发到真实对象,或者可以提供额外的逻辑。在代理中,可以提供额外的功能,例如当对真实对象的操作是资源密集时进行缓存,或者在调用对象的操作之前检查先决条件。 + +> 使用场景:略。 + +## 类图 +![](Proxy.png) \ No newline at end of file diff --git a/examples/php/proxy/Proxy.png b/examples/php/proxy/Proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..a58d19e845c49cde686733a2878dd2d35925727e GIT binary patch literal 37149 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

(=3ahGP_XmhaT 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

*IBA)H!ZdZDT!E z`swI_tyX_i1L@%hFYHP;51$eV0S@uJ314mVu)Ws|_E9(~Vzz`!Eb?=|pDi*A@hZW& z%g%tgIPxPPZ<5PFE+RZreyyA2TrK#C^eS-NE4f7looMeFBu2xP`;OhJN`;3KZr*L@ zz6m`r)6b4ePgmf{O*cW_Lc>xNpXHWD&M99=u`O+iyLt z9gUP0`jVA)TscAoGPd!XW$$!nu-MjZ#taQkw1;JOkF|%FtBy}5hV-Vf+K?jtexkPl zqlCVN*b=l))`%8<)&8~?aYuJyo@m#m{f*xb@R+RoZ~q=)_31szWfDfJ?dHVSalKPf zd2%^?<5&0fJd0|1z;5tBsn3v^)`(@dMPbU2rLvQ)gdtzpt5M2CwMgO>liNIpp{_1u zIOaXwfQICoxh2?E_i<#fTwfRuJgfb|=$>a~B9eUWct;+F`|W4y9j(|{C?bTY%gNOY z7*tn>>3-ZlsEwLampL&TgLI*ivm#}+tzu$rF#WDCd$Df!ur7wP2g`6J$kfLlrA~3` zI2V*jFB@z+tk}}h6^e{+%)Xma)tUA$FRx9na`NH3+^uk70Dzo>T*CefHaWJv2Q=d! z!#!PECQX~Ekh=DM)NfP^x{-FtzP)yL*{fcw-n_4cl$7LttEc+=5rXmXjIp}(C9&!B zY}F~oz^40CuVL?+w}9+~iXC{ySEFBU{hlI`=g8ZFf>KCu)ygkQ2}CU0qJ&pRN8j9$ zA#4dX+^%BG@Wjw+^9HF^#U7L3f?}jwXPHiOopdFBOUv3U8Jhy|C_+T!+G6m_8m#Y< zArqxqK!!D00$*%j8&Fnf&`wAqq{rt%H)P@LbG?WwrEr@tsJ zFE78TuxHyxow_c-<4+a${{54)`WLSy3DD7u@8cO24--G4Bbk=P5AW%jK7jB0M5ZQg zW-$J!sadP;+nRsUuZF&|wp*~8V=kw!%+TW8Pf4*>Dn;SeRO;JS;d@$}D3fhJ<44-; z6Dajf@z!~4QvZ@~x~Y*Ii&d;m*^EX@B&2h?SCAuv_l=``VmedNC~hrj^nBamG5Tdk zpfIJ32Yxu^(a|o6PW+wjnnIgtU5nLan9nd?dw5OupdEO0b&%3oPN>R2{tyz|x?^i$ zz40r2i^Zuc0AA)1<2niT!{2gy32W%-3Oe0=g-#iAaA*4PB!7W}-q{9?1|O%es3U}U z3!33|xp3%Qc<;L#iPwPbgPfMjr|{Z})Jx^AkLzxN-xNN;n3WA?%9=4V#Y9)cT#etK zB@hVCs1zs=s%UAs>FC?)@7zb!yoP`5OM-?hbQ$mOnPukUo7RhyfY1&n80!%!#F@n#2M4V`LK{7)Y z3U7|B@IO>4Oi_GK)sZ3dq&9>)#9ks*M?3{2 z8Y1`S4*bNfc~iyxU)%tl7Q_BCJc4py3#+1j&w~Ccgkc|SFLFQ%U*D$S-Gf{M;bnv% zMfcvG3VCBdDe41CF!47~f&(?sq3(Nz93>YJh=&>}SJ2Wk)NO-`ZllD;hk+6+=)D|D zDh>Q0NU4E9mSRY$U+eRdr~`xo(z}Ne>f1ZCt7UIl2(&s$9-O2Pf+v}VS!y;}{dBj3 zCp)xHok0!R;{W&^p@*-Si^=8-)xEvbL|_OgMMgh5DE{G}yV6%<=uzcajylA^9RY(t z@q~Z-Xj%SFK)v_94n~IO-S1*GUzOT%YM-3SfaI?uH$IQ>!oJN7+}bZCU|Ka%7EyKJ z4Z~Q99fBxT`92$0k7He+{idp}x){-Ubon4bqo=PXum5@j1#*dyqidYBPpFj&eMM73 zV&XYQMZW2*@!Sdc$~`0!ek@!lU#;>=xMneS+F40MHS@@WxR0Jzfo-d(?tXM3`RRn( za7B(|`RVA;Y*i(iJ31%`3$>wlqJAGZ0r9Xi5Iogvx5j44f&qK_X0r26hn9{kMY$f@WT$wCK7I_Gel^ zoGCgC`wml2S;F^Tou1w-I8SZsyXGU!cJZLLv%mGx+iNg zy_xKEmhxiZ27oeZI$z`!Jl@IG1x{=K8VC&+DH&S!ju07dz`O^1#ayL=c9*ha;(wtZ zxjAgg!U)>axhyUvC8Z?k%QAW)o2pdd9e>aBh4rM$qxG@U%kwkSqc1rQ z;d|bvYHs)eotmy6SqOmX1I@Ge${MbImC)bvf`l;cwz00 z(p-h!wHi(L$-J_Q^GoOX1YfzjZc40R-Q9>YGTk-p-#3RwGK(}YYHfz^+_+~?stQU? z`<7X7Uswz?8{XAXoc^NV%~2(NCRk!P<0s54a9OfywMwpNT-mt(^&?FK@ffcwSa-0e zYty28*7kXJPOj;4dA*ruR&ErZ^gb)d`y&zH zCT@)d8YI^#YkiG+JMNI$rG+rURG&WEHkEm-hC)C1I*>Fl4zW32Qs`wULmQ5>tW6Wev zn?GgnlaskZMX#5Px5u$!1m*n6U9=%p~k(FiT-PzcQ za&A=ONax3rhJ~J#i6av9^xMf;MJEY&_v`t03S?hzx6Old)_OM-#QcW^W{8MuBXVPGm|m zu16+z@^x+6z-h-Y2$*4+t^PT?Q5b$7^Z?~FIa`oURjgX^2W6C_uRZvHe3ue*a97jX-#msQR_ujUt?kXs3PFr1J zk7@di5e3Amxio+fELu!z)<4f{3KoK6Bn?*_kyvCLyW&F}#A`G%)16*#4X;3s7HlLJ zL=lK<+Zd>rb9KV{iVU=Lrq~DlfBH!YU4Bq3Ke_r#8`)3do2+8?faI=(jC%&`_c#L@)Y&Dxa`3>Umae?{kkS7n?$zb<{})#gxHCVJWmxj zMeoj8{b)Vqv_Q0?3@XAwg(Ua)*tg}7F%rzc@UKGl^3z3bX%GnVCywy7NCAQHP+sTy ze>IQ*&>IL8_vhOG2QkdQx%4j$hRQImr@JpR3oF4nnvPT2C6hRX1WqPRwnQU2DMYZY zw)s#^tKM$eMpJbsPei-YJS_+7{iBr7gkKB(dNo_qzHS_fT1 zV@CPhZIg;H03ag^SP%S6zoUy~=7EgNZJs!(E!M|m{rMtH1(hZ%h+Q|Wld?A7e6YFf z*7AdY;HQ6}gjHWLYaK?-{dqc5XGVATBw$((BbUk$&q^JoU;2g++-q%a&^21#U9)if z*Kaff7vV{lih?~^z46;fLmH^WAKnH+W)>=B%6HG#M%33UG;yyO5%-P~g&>DXo|o%7N@dn|NYo%Irwo3%#XiX8rWxyIX|7bp@Zzxri*jG< zBLKdX?_&q{=j{i=7Zhb)bPs@ob`neG;DD3q3c@w2uJ^SByTTH4rlf=Dpg#Q6AG zq?4ZGLADFVWWKQVh=%8dr{Hd1QwDq?*tea{r3(>Q_%Gtm_}7o_U$tOkT&DX`80i>^ zPY98qjkw3ARuO*K{v-cvamP}rJj%ES2=Vjxb&K=jfk{C2J7uOeJr#8Jvde}&dF%D% zdF0U%In}Oy)|%DVlM6Iv$$!>>Zc!lh`4a}oEb$d|0ubk+*)9}u626j}L%&(j>HVeu z+c(v@%%4AkiRvZ>W6SQ=wDW%gDe{=;rRG5$JY2|1o9a2qI0F33eQ+ssWI9TajOohoPpx z^hI0UTK{y6(|cSR=Ck-n`{(&us?#Pbn9r^tP(iPgus* z!yRSN?BY$DtrKwoYEi;c0eX&_@YhHcnTgWesqUr!>v28yJk9; zjlg{4fjZ>W?^o~28pg@V!_3d)fiEB3cP$ioY!NrioD_GHO6IQ-4JtEBWX z0P`N#;;qoq;kr?WiL%pCR=Owzjv+QhOoq(F+XVTbS@AV0HFjrBBTPJQpx}Q6wkmkg zJ;xP!U1l`nu)TTtCmiNl6@-fe6nd*i1zb(nhBcd4d-~R<*Ct#KS`EEh6b{s!r&xEn7VU^_UH_f6{6@?NVxsd{ z+W4-iG-z2FRkbyrR9rAOL!6YwUW}Jz$S+JZYI;tJw`RQRf8~BWFTi>} z7yfDvU-?C0wJA6$r_sFHH?B07V#}wW?@ho1nVkdL!&N`WGI`*kIC$>h(PsDbmoA^v zvl}zGf5EvxaFCJhBVH9@C~zRdkm{XXsr^)M2dchFA91fog||GeT`Sv6QMYPw%yV_s zgMopM6v(dQq{|P2S8^H8htJxIy<>lMVw}nd-%`}Y?-!VR%mDaleZ$;-?o0sD>ioWA z2`_Bh>sQ%!Oy2tS1F;HQJ?255B`vM%L@-P69?NsWaIQyS;NgN7?xqfh{i8z$ZLNat zji=@CVbe=afkPlkeG0AaB+0;4d;4iS#qVj@ExldhEo+9g0+Gw&lyB2Z(ur=j2F3+a zn?5=5RTRlm-e@SMLQ*KdvkXB@^cz!cUO&Okl)$^IjFxo!x~k>}wN3Dq2VCY`&%2+S zwF^Au4+FA?gEvkl8!K^nlj2p5*=grL{XKKxfV%k_tDa(l$ca$S5Dvi)p-#aDtg{Ex zx2o&rROiJ^<0_kc3jx%hG02dm_sAtizRsgvstkoe=bAdMNjhd54qM=n7jl zM3^oXsBo`E@igCXjuGaaJ=t|52cOPyF`Y<$?8A&w9mbui-s)l-$OP$;A(!nq1Cii= zMTYc3Ma6#waeg}VSOftb(x@9paYtA%fDWR%gVMTxpFH|EffobNO7_2txB4$#x~WX@ z?IY87^U?CUwuLId+XQNeJsL&qXq;B&u7NWDl$OTveawZ}Dkjz5{x!(;2IMIbf!==k z69oUx5H!b;8NxNtTaCYclq|pxWE>4Vz!Mi{v8?tlt@WP+&*=%{^Pv!;%%~T3F%F>pnJ#ouelRznvJ{srzhbw4@wBGe3 zr9zbTlCCB_ZyA1G&i7Y*=s7l%&p%vWc4VOp1E0Rb8$<1}>AF!zHj*Il5lbm`Sa18` z?V1lHNalnJOOgf#bNj76UN5Jr4oqeB)g$2$jWpAxto#^~IE?{m4;d6f-0LF%YnATn z$jAUM{F!v#2`5!nQ!Ok6JtRh12)dCBnmBOz12Jme!Uz^uI{=YI)O)a}rJ3gP+PcVn z11@T`Ku9cE(bzN>ecFL5g@lNKD2PbK%4qD^+uTe6J?9r9Bl;q6>z^)}Qn)r^78@Tu z0K@geHQa59*avv88^&a!;We0FoOCby&e+SoA1s{E+)3lqI?;qccV~d~JBS?n;myBY zX+?}$h(`KkPery52~~pTn`0)MW?F>Q!*K)px9?bP)s<nJ?L?}Zr{acNPnWx zSwGa%u`o-6mmgqVB$r;uiC>OR?LctJo}Lbt+J|wKoX4JPX^DwGH-6dww z?9*mwuvGys5?jpYb;Ma7-1G0M^#Aps^j*Hlr3lF`Atu8t&^1Jx|Wiv@P0pga^m}e_VB&&_7$4s!0qmX z=2ZjX(h+(V?6SSSI@l8N&Yjo5n~OiQZNDqX7=s6TvSP07@ACTS2g|VW7>Cq`hynoT z*(=%~rROjTiC3^FUoSdb$5E(qxD17(U+w9C8g%wlYC?wMAakw3bu>;u;NXXz^q%e^ zjtZ8FI{EKpL{+Gs0o*OmTL5|HB>zU9QlxaIBZ>9;6Yp^4nYZfISYS4?Yc+T8edu(- z2#56W6q<9-`8eEJCAC_pS)3{~jVWFtLRw#M1K5%{(EE?%X3|8xnw9+Ra^` zJ6z)pXp0E&@8TiHllrD_#{=EL<`fQlec)DD?y&jxQ32n;yyU{L`PkYVm+fc9oZ__I zujccHqi$vI`8|Upr5oh0YHgCjKGz->LvanNMH7 zaQ5UW(!oew^di3APwVX0{xp4{^UZ>PXLvv;3%+9#4l93`+a?RHciFyzwU^%>^2h>S zt3j~D^tjx-pRd+?RwkU+<>(97f}2=LRYK;vfYp+w{oHW1S{aLn{*%4}p^5315vJ}g zj*qe^5FGsYkQXOh0A;Ixs^zxJ_%=Wve@$|ai&rWQki4G6Bl|+2awe<1s(aF!;KC&Q z3?dHbJHr+Ui(hA<3Z-k53@|gze2FMZ(!iU&syfx#_^2#BAy}SSprNIWK1cd1F%coj z627LZA2U-+!#ow=Ujh7zSmTnf3_XX-3|45^Ag-*A(u9%qk&DG(L$CWiP9#Sg@YJe< zmL-i?58uc$+Kr~pObiE=6HZm<=?aJ4-m071zDtU~AWGr+{*4^Y*kt%^uE&+mbkL^nmzVBrwXAWTj2S0^oOlB zORhq!OXX!+d3u6PpuzOH?KhG?f%O-b$?*JC0n4bgBg%1u1)L6W2 zn$)oy&L8ik+af1Ea%K|?3RD=1<}{3{&EESl_acW3*E)ZMjX3Cb)BI}RVz12w-@0Oe z+=eH5_Z%3ytQ^21-;e;k#OR*L-MVa{bceqMI6JSoqcZ4g>iMRA-_(S zjh3RCYAm@rMO?1G=3H8;$gJWBZbw6OaZ0f1e!fe@?N3tepi61UzV|k|9kBX4yH#r^ zlE&uhPHT-x4X7 zQCga|#i|Moh7H0NH&Wj&qu74N&Fz(?)^$yl;XZ#4)(MWNYW}mLw371Vv{#{FiTO9v zjH)A&z)6VQd>dMzy{)8t%(*MBe=WoiuFaIT?NU9^;2foe1o9SMmx@QQBuK3^u`m~w z#NYDVtMb^8r=k|BJO=PQcioK>WWg6fFbKt#q||Eb{JEEX4_)w%aGy4b!(}gG*R)yi zgq8!~@#gACo@+B1HJ+nAnPbvo5p>?4T)Oc(#y|SYa7^U4F1JnX zQP&0F8m+2|dARI@97UcYk*1eFIYfOKKVhSE2lKa|6HRIOOSKQXD*7c+#bFZf?2fRX zrKNc%yOfz~f-$@1yTxAx{6uXTgj}qPvF$Nz64f4t8bUqs>Yf)g?H}rI+q z5Af7ZGq-ItqR%h%d1Yw(S%>L-H)8>M1ijQu^@+2$iGR(=@U?Cu4(QVi|p9niqMnDZcT;5i&rsc`?yYsNrb^Z} z4Nz?l1v3Twr+OcPI@>d%oO#Qk2yWJunYdXH-)*D?gy7b+G`U z3Nu(-nA%c-jSunym7}`n?{A^jrJwtbT30mX$JkRx!#AQ=B({I%-b0S!k9~6dUuyg( zfQpW}X7vFpmlGk6ON=itl*E1h`KOn%>f>G1$cC_d>kBk9jqQ+ydTIb) zJH1o@-Vtap-`51NctD<_aoCZdUocXZ(}*y1I?%bwujj?Ru|s|TW8s|7i%QPAjeT_G ztJ_aV({|&xB_wXId%F5V-(m~4xAWYUEyNdP=+vTq9b(K*oedxmcKmY*QI-F-41=C~ z&A?)7dwbpo;Dy}3Ipva#BkE`X#%MBMNYKR6-0YosG33}W+wohFHyM+8Tr~zgklDdw zbT-N2a;!G1LuSqb$&w;8T!*K)`8YUg#yt>HN-n)8AB^_ik5+z&g6q>U0q7~3S6gSW zV&9fZDE2pD=l)OR!b4h6y-HqwBmi zKbm3-oqPQWYXe4`>8OTz(ZXI4P)x}|{0gV^vz`VgD=;@;k?Tvn$lH%+~2P03WKZFDLhxDWMWicIYVvMF? z^lluyc733)LNJWUwlv|m$VZy9b46Y1TTPiXi{@*`;WtlGGxKtE%82QpuSz{1ey^|V z-`l+Pp0{|%V0ysP!w}urE+ctgPn{w|xZ034QUyTh-W(@D^2ZbpR2%}Q*Cu_PBj1s` zogTLpTnpwUJSYHVVdT8!S<(K7(#breLMq*VY-)hd`x-||E^v>zM6(30Zs@2_SU$1C z%#vdDI&fgl!tjypvsuSRsGZ<+@YMO~2*P1F zx9<^;!yRHKhHwDYB)Dj{Jr}emCnh)B?Qx>tXRc7IIM||mSQH*;NOS{22bR{>x7w9K zIf>bOMxW%-jBfqQ!oYmTpr7zB-dtB+FmE|oVB1RG!II6WJPFZWPx<$TLp7Vt&0iA$ z8+C1S`QXT}p1Y!L!-N$1&UPRC zI)iUy{t863&|jQ;WB>$*GX zXQ6O1dM@|P$I6PY%wlI>hf6=cg5xqF63_gu%6;1|7RuY1I1b^IE*9ZCp>gdHmVq|^ zB;vVde*aFxS|XM`f;p@F*8q^L8Rz5#9OBk;LO$50mxf<>b;7l`Iii!FZ77397Dz|* zsR4(tHLWUjNt4wtO46O6;iUxg)`oKAJ6%&p1se(@nYaH~`Kmnx!{hY}pmog^3vin} zy7u#X-&10b(}rqinH;R#k9h0VXjov>WI(oAz3V?J0$|uzKO2O3Dep0aJK;Xq0rAz) zLG{&_RAe`|; zpR-9;-52}kO|1J0awLP8oyi1_`cpU_MZyBwAWRCC3qbi$7#<)LKJDtno+8uVr{w?S ztU78{CY&e|oO{i6cndd3o;$s~>gCqKbI}!5?$$~TvJZEDOPgIn3MK72#p4j&}FCK|x(aN__+R7}> zmOMCq<*4Bxe&%-+Wzer5P82~tx%KX>k%sl-$wpj!s4DQ9hk8M)jWIIA`IBQGvTzFF zlOU{10DzQZOxOYSR}JdseLZf9WYUlHOT$j38OGHG!TninIj3seJ&BzphZL8ukUf8o zAqOiLIN)`+sX&gic1(;T>#6DEuff>IN2)QsJT->_7=o@lHo}}U+$X%i9OiPu3Z2th z_PC9Woebj4G`IydH`5YO-EbD9q+O|dhAREt;*{7b!{b1C)~gPHtUo#ckl^XGi_l>1 z-V!fVY0J`2DES3!Wx)p{MBUn|y5@M4*s_sf;{Iy6UQ)m` z*ey}57_5JFGq9FJNSR!Bi{b}(8qU!M#ZVJtsy$zeFvksim3Ugv< zic7*%(2WZ$GEWyzY1%6%`RO{zY_QB9_)u2uP!v4}V2`6#q?;Ue0#}TiZ|C-3wA#F5 z-5U;k9@S5DA~Y_**=b{4ilHVr4SRBOyq#B{4|5L7^jHX}aCZ%?-JvotIrzB1B*0(@rS;5}J*+^hbcpLdDX+gvVN=i6 zZ3$F^loxEKJdMb$oNI#(xJB^g+xbeLLU)>`Vc)l}jZC##aa#g;J0(c$+8=x;O2WZn zjn9B`)c$?%Ut(hTM5U*^mB%0C!oqBSM(Rc+fQc(>je#Oj=^mSI4>Uf)asTIYtyhmB zd@O_a8$KS+aC6yX%G;{zJZ_Hchkm`Fq2?7tifF_Dfhn#9Q$_65pjB zX*~0jkVV?k-;zR*7@E_|;GH@bLbBY<;oZAZ?F~4dx_wwz`~1{wtMdCN|I|{1C5CzE zsOr8pG%!-tOh=ido^7>q=VHX1>Z-`dNB=vB{p)5T%-OFrpoXhXy#LorMIW%xEtt?m z^&d4Nd(DHwl3}!1zK4g0k8gQ5sjnO4R)|CZE#lv3m${3PE#bGklYbB)o6mv20X;rI zS2`Y=DA3-F`iKfD2DFg_{}G~#>@Nqt)KQ3RJO{os4@P#R1Ham3Lbj>{Upl$}|1a~; cvdO)~XkkwJwlqDp4Fdi=mz0+%5YzMiZ^3y!y#N3J literal 0 HcmV?d00001 diff --git a/examples/php/template_method/TemplateMethodTest.php b/examples/php/template_method/TemplateMethodTest.php new file mode 100644 index 00000000..c6bd3ebe --- /dev/null +++ b/examples/php/template_method/TemplateMethodTest.php @@ -0,0 +1,40 @@ +build(); + +// Output: +// Running android tests +// Linting the android code +// Assembling the android build +// Deploying android build to server + +$iosBuilder = new IosBuilder(); +$iosBuilder->build(); + +// Output: +// Running ios tests +// Linting the ios code +// Assembling the ios build +// Deploying ios build to server +*/ + +class TemplateMethodTest extends TestCase +{ + public function test01(): void + { + $androidBuilder = new AndroidBuilder(); + self::assertEquals("Running android tests\nLinting the android code\nAssembling the android build\nDeploying android build to server", $androidBuilder->build()); + } + + public function test02(): void + { + $iosBuilder = new IosBuilder(); + self::assertEquals("Running ios tests\nLinting the ios code\nAssembling the ios build\nDeploying ios build to server", $iosBuilder->build()); + } +} diff --git a/examples/php/visitor/Animal.php b/examples/php/visitor/Animal.php new file mode 100644 index 00000000..75bb4c8b --- /dev/null +++ b/examples/php/visitor/Animal.php @@ -0,0 +1,8 @@ +visitDolphin($this); + } +} diff --git a/examples/php/visitor/Jump.php b/examples/php/visitor/Jump.php new file mode 100644 index 00000000..aaf420fd --- /dev/null +++ b/examples/php/visitor/Jump.php @@ -0,0 +1,21 @@ +visitLion($this); + } +} diff --git a/examples/php/visitor/Monkey.php b/examples/php/visitor/Monkey.php new file mode 100644 index 00000000..2091c3a5 --- /dev/null +++ b/examples/php/visitor/Monkey.php @@ -0,0 +1,16 @@ +visitMonkey($this); + } +} diff --git a/examples/php/visitor/Speak.php b/examples/php/visitor/Speak.php new file mode 100644 index 00000000..09fa2d8a --- /dev/null +++ b/examples/php/visitor/Speak.php @@ -0,0 +1,21 @@ +shout(); + } + + public function visitLion(Lion $lion): string + { + return $lion->roar(); + } + + public function visitDolphin(Dolphin $dolphin): string + { + return $dolphin->speak(); + } +} diff --git a/examples/php/visitor/Visitor.md b/examples/php/visitor/Visitor.md new file mode 100644 index 00000000..57aa18cc --- /dev/null +++ b/examples/php/visitor/Visitor.md @@ -0,0 +1,11 @@ +# 访问者模式 Visitor + +## 概述 +> 通俗解释:访客模式允许您向对象添加更多操作,而无需修改它们。 + +> 维基百科:在面向对象的编程和软件工程中,访问者设计模式是一种将算法与其运行的对象结构分离的方法。这种分离的实际结果是能够在不修改这些结构的情况下向现有对象结构添加新操作。这是遵循开放/封闭原则的一种方式。 + +> 使用场景:略。 + +## 类图 +![](Visitor.png) \ No newline at end of file diff --git a/examples/php/visitor/Visitor.png b/examples/php/visitor/Visitor.png new file mode 100644 index 0000000000000000000000000000000000000000..8af614b47a490733ed94039525dd412ac2525a68 GIT binary patch literal 69969 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%0DJ@^UNHi1b`utQBUXn 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

b`#e_$G_AjkyodHMiJU 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 literal 0 HcmV?d00001 diff --git a/examples/php/visitor/VisitorTest.php b/examples/php/visitor/VisitorTest.php new file mode 100644 index 00000000..471ea046 --- /dev/null +++ b/examples/php/visitor/VisitorTest.php @@ -0,0 +1,55 @@ +accept($speak); // Ooh oo aa aa! +$lion->accept($speak); // Roaaar! +$dolphin->accept($speak); // Tuut tutt tuutt! + +$jump = new Jump(); + +$monkey->accept($speak); // Ooh oo aa aa! +$monkey->accept($jump); // Jumped 20 feet high! on to the tree! + +$lion->accept($speak); // Roaaar! +$lion->accept($jump); // Jumped 7 feet! Back on the ground! + +$dolphin->accept($speak); // Tuut tutt tuutt! +$dolphin->accept($jump); // Walked on water a little and disappeared +*/ + +class VisitorTest extends TestCase +{ + public function test01(): void + { + $monkey = new Monkey(); + $lion = new Lion(); + $dolphin = new Dolphin(); + + $speak = new Speak(); + + self::assertEquals('Ooh oo aa aa!', $monkey->accept($speak)); + self::assertEquals('Roaaar!', $lion->accept($speak)); + self::assertEquals('Tuut tutt tuutt!', $dolphin->accept($speak)); + + $jump = new Jump(); + + self::assertEquals('Ooh oo aa aa!', $monkey->accept($speak)); + self::assertEquals('Jumped 20 feet high! on to the tree!', $monkey->accept($jump)); + + self::assertEquals('Roaaar!', $lion->accept($speak)); + self::assertEquals('Jumped 7 feet! Back on the ground!', $lion->accept($jump)); + + self::assertEquals('Tuut tutt tuutt!', $dolphin->accept($speak)); + self::assertEquals('Walked on water a little and disappeared', $dolphin->accept($jump)); + } +} From fac7354d2e392faa7666eac92f630688235f9936 Mon Sep 17 00:00:00 2001 From: raw34 Date: Fri, 14 Oct 2022 22:05:18 +0800 Subject: [PATCH 2/4] feat: add category folders --- .../chain_of_responsibility/Account.php | 2 +- .../chain_of_responsibility/Bank.php | 2 +- .../chain_of_responsibility/Bitcoin.php | 2 +- .../ChainOfResponsibility.md | 0 .../ChainOfResponsibility.png | Bin .../ChainOfResponsibilityTest.php | 2 +- .../chain_of_responsibility/Paypal.php | 2 +- examples/php/{ => behavioral}/command/Bulb.php | 2 +- examples/php/{ => behavioral}/command/Command.md | 0 examples/php/{ => behavioral}/command/Command.php | 2 +- examples/php/{ => behavioral}/command/Command.png | Bin .../php/{ => behavioral}/command/CommandTest.php | 2 +- .../php/{ => behavioral}/command/RemoteControl.php | 2 +- examples/php/{ => behavioral}/command/TurnOff.php | 2 +- examples/php/{ => behavioral}/command/TurnOn.php | 2 +- .../php/{ => behavioral}/interpreter/Interpreter.md | 0 .../{ => behavioral}/interpreter/Interpreter.php | 0 examples/php/{ => behavioral}/iterator/Iterator.md | 0 examples/php/{ => behavioral}/iterator/Iterator.png | Bin .../php/{ => behavioral}/iterator/IteratorTest.php | 2 +- .../php/{ => behavioral}/iterator/RadioStation.php | 2 +- .../php/{ => behavioral}/iterator/StationList.php | 2 +- examples/php/{ => behavioral}/mediator/ChatRoom.php | 2 +- .../{ => behavioral}/mediator/ChatRoomMediator.php | 2 +- examples/php/{ => behavioral}/mediator/Mediator.md | 0 examples/php/{ => behavioral}/mediator/Mediator.png | Bin .../php/{ => behavioral}/mediator/MediatorTest.php | 2 +- examples/php/{ => behavioral}/mediator/User.php | 2 +- examples/php/{ => behavioral}/memento/Editor.php | 2 +- .../php/{ => behavioral}/memento/EditorMemento.php | 2 +- examples/php/{ => behavioral}/memento/Memento.md | 0 examples/php/{ => behavioral}/memento/Memento.png | Bin .../php/{ => behavioral}/memento/MementoTest.php | 2 +- .../{ => behavioral}/observer/EmploymentAgency.php | 2 +- examples/php/{ => behavioral}/observer/JobPost.php | 2 +- .../php/{ => behavioral}/observer/JobSeeker.php | 2 +- .../php/{ => behavioral}/observer/Observable.php | 2 +- examples/php/{ => behavioral}/observer/Observer.md | 0 examples/php/{ => behavioral}/observer/Observer.php | 2 +- examples/php/{ => behavioral}/observer/Observer.png | Bin .../php/{ => behavioral}/observer/ObserverTest.php | 2 +- examples/php/{ => behavioral}/state/DefaultText.php | 2 +- examples/php/{ => behavioral}/state/LowerCase.php | 2 +- examples/php/{ => behavioral}/state/State.md | 0 examples/php/{ => behavioral}/state/State.png | Bin examples/php/{ => behavioral}/state/StateTest.php | 2 +- examples/php/{ => behavioral}/state/TextEditor.php | 2 +- examples/php/{ => behavioral}/state/UpperCase.php | 2 +- .../php/{ => behavioral}/state/WritingState.php | 2 +- .../strategy/BubbleSortStrategy.php | 2 +- .../{ => behavioral}/strategy/QuickSortStrategy.php | 2 +- .../php/{ => behavioral}/strategy/SortStrategy.php | 2 +- examples/php/{ => behavioral}/strategy/Sorter.php | 2 +- examples/php/{ => behavioral}/strategy/Strategy.md | 0 examples/php/{ => behavioral}/strategy/Strategy.png | Bin .../php/{ => behavioral}/strategy/StrategyTest.php | 2 +- .../template_method/AndroidBuilder.php | 2 +- .../{ => behavioral}/template_method/Builder.php | 2 +- .../{ => behavioral}/template_method/IosBuilder.php | 2 +- .../template_method/TemplateMethod.md | 0 .../template_method/TemplateMethod.png | Bin .../template_method/TemplateMethodTest.php | 2 +- examples/php/{ => behavioral}/visitor/Animal.php | 2 +- .../{ => behavioral}/visitor/AnimalOperation.php | 2 +- examples/php/{ => behavioral}/visitor/Dolphin.php | 2 +- examples/php/{ => behavioral}/visitor/Jump.php | 2 +- examples/php/{ => behavioral}/visitor/Lion.php | 2 +- examples/php/{ => behavioral}/visitor/Monkey.php | 2 +- examples/php/{ => behavioral}/visitor/Speak.php | 2 +- examples/php/{ => behavioral}/visitor/Visitor.md | 0 examples/php/{ => behavioral}/visitor/Visitor.png | Bin .../php/{ => behavioral}/visitor/VisitorTest.php | 2 +- .../abstract_factory/AbstractFactory.md | 0 .../abstract_factory/AbstractFactory.png | Bin .../abstract_factory/AbstractFactoryTest.php | 2 +- .../{ => creational}/abstract_factory/Carpenter.php | 2 +- .../php/{ => creational}/abstract_factory/Door.php | 2 +- .../abstract_factory/DoorFactory.php | 2 +- .../abstract_factory/DoorFittingExpert.php | 2 +- .../{ => creational}/abstract_factory/IronDoor.php | 2 +- .../abstract_factory/IronDoorFactory.php | 2 +- .../{ => creational}/abstract_factory/Welder.php | 2 +- .../abstract_factory/WoodenDoor.php | 2 +- .../abstract_factory/WoodenDoorFactory.php | 2 +- examples/php/{ => creational}/builder/Builder.md | 0 examples/php/{ => creational}/builder/Builder.php | 2 +- examples/php/{ => creational}/builder/Builder.png | Bin .../php/{ => creational}/builder/BuilderTest.php | 2 +- .../php/{ => creational}/builder/BurgerBuilder.php | 2 +- .../factory_method/CommunityExecutive.php | 2 +- .../{ => creational}/factory_method/Developer.php | 2 +- .../factory_method/DevelopmentManager.php | 2 +- .../factory_method/FactoryMethod.md | 0 .../factory_method/FactoryMethod.png | Bin .../factory_method/FactoryMethodTest.php | 2 +- .../factory_method/HiringManager.php | 2 +- .../{ => creational}/factory_method/Interviewer.php | 2 +- .../factory_method/MarketingManager.php | 2 +- .../php/{ => creational}/prototype/Prototype.md | 0 .../php/{ => creational}/prototype/Prototype.png | Bin .../{ => creational}/prototype/PrototypeTest.php | 2 +- examples/php/{ => creational}/prototype/Sheep.php | 2 +- .../php/{ => creational}/simple_factory/Door.php | 2 +- .../{ => creational}/simple_factory/DoorFactory.php | 2 +- .../simple_factory/SimpleFactory.md | 0 .../simple_factory/SimpleFactory.png | Bin .../simple_factory/SimpleFactoryTest.php | 2 +- .../{ => creational}/simple_factory/WoodenDoor.php | 2 +- .../php/{ => creational}/singleton/President.php | 2 +- .../php/{ => creational}/singleton/Singleton.md | 0 .../php/{ => creational}/singleton/Singleton.png | Bin .../{ => creational}/singleton/SingletonTest.php | 2 +- examples/php/{ => structural}/adapter/Adapter.md | 0 examples/php/{ => structural}/adapter/Adapter.png | Bin .../php/{ => structural}/adapter/AdapterTest.php | 2 +- .../php/{ => structural}/adapter/AfricanLion.php | 2 +- examples/php/{ => structural}/adapter/AsianLion.php | 2 +- examples/php/{ => structural}/adapter/Hunter.php | 2 +- examples/php/{ => structural}/adapter/Lion.php | 2 +- examples/php/{ => structural}/adapter/WildDog.php | 2 +- .../php/{ => structural}/adapter/WildDogAdapter.php | 2 +- examples/php/{ => structural}/bridge/About.php | 2 +- examples/php/{ => structural}/bridge/AquaTheme.php | 2 +- examples/php/{ => structural}/bridge/Bridge.md | 0 examples/php/{ => structural}/bridge/Bridge.png | Bin examples/php/{ => structural}/bridge/BridgeTest.php | 2 +- examples/php/{ => structural}/bridge/Careers.php | 2 +- examples/php/{ => structural}/bridge/DarkTheme.php | 2 +- examples/php/{ => structural}/bridge/LightTheme.php | 2 +- examples/php/{ => structural}/bridge/Theme.php | 2 +- examples/php/{ => structural}/bridge/WebPage.php | 2 +- .../php/{ => structural}/composite/Composite.md | 0 .../php/{ => structural}/composite/Composite.png | Bin .../{ => structural}/composite/CompositeTest.php | 2 +- .../php/{ => structural}/composite/Designer.php | 2 +- .../php/{ => structural}/composite/Developer.php | 2 +- .../php/{ => structural}/composite/Employee.php | 2 +- .../php/{ => structural}/composite/Organization.php | 2 +- examples/php/{ => structural}/decorator/Coffee.php | 2 +- .../php/{ => structural}/decorator/Decorator.md | 0 .../php/{ => structural}/decorator/Decorator.png | Bin .../{ => structural}/decorator/DecoratorTest.php | 2 +- .../php/{ => structural}/decorator/MilkCoffee.php | 2 +- .../php/{ => structural}/decorator/SimpleCoffee.php | 2 +- .../{ => structural}/decorator/VanillaCoffee.php | 2 +- .../php/{ => structural}/decorator/WhipCoffee.php | 2 +- examples/php/{ => structural}/facade/Computer.php | 2 +- .../php/{ => structural}/facade/ComputerFacade.php | 2 +- examples/php/{ => structural}/facade/Facade.md | 0 examples/php/{ => structural}/facade/Facade.png | Bin examples/php/{ => structural}/facade/FacadeTest.php | 2 +- .../php/{ => structural}/flyweight/Flyweight.md | 0 .../php/{ => structural}/flyweight/Flyweight.png | Bin .../{ => structural}/flyweight/FlyweightTest.php | 2 +- .../php/{ => structural}/flyweight/KarakTea.php | 2 +- .../php/{ => structural}/flyweight/TeaMaker.php | 2 +- examples/php/{ => structural}/flyweight/TeaShop.php | 2 +- examples/php/{ => structural}/proxy/Door.php | 2 +- examples/php/{ => structural}/proxy/LabDoor.php | 2 +- examples/php/{ => structural}/proxy/Proxy.md | 0 examples/php/{ => structural}/proxy/Proxy.png | Bin examples/php/{ => structural}/proxy/ProxyTest.php | 2 +- examples/php/{ => structural}/proxy/SecuredDoor.php | 2 +- 163 files changed, 115 insertions(+), 115 deletions(-) rename examples/php/{ => behavioral}/chain_of_responsibility/Account.php (94%) rename examples/php/{ => behavioral}/chain_of_responsibility/Bank.php (72%) rename examples/php/{ => behavioral}/chain_of_responsibility/Bitcoin.php (73%) rename examples/php/{ => behavioral}/chain_of_responsibility/ChainOfResponsibility.md (100%) rename examples/php/{ => behavioral}/chain_of_responsibility/ChainOfResponsibility.png (100%) rename examples/php/{ => behavioral}/chain_of_responsibility/ChainOfResponsibilityTest.php (96%) rename examples/php/{ => behavioral}/chain_of_responsibility/Paypal.php (72%) rename examples/php/{ => behavioral}/command/Bulb.php (80%) rename examples/php/{ => behavioral}/command/Command.md (100%) rename examples/php/{ => behavioral}/command/Command.php (75%) rename examples/php/{ => behavioral}/command/Command.png (100%) rename examples/php/{ => behavioral}/command/CommandTest.php (93%) rename examples/php/{ => behavioral}/command/RemoteControl.php (74%) rename examples/php/{ => behavioral}/command/TurnOff.php (89%) rename examples/php/{ => behavioral}/command/TurnOn.php (89%) rename examples/php/{ => behavioral}/interpreter/Interpreter.md (100%) rename examples/php/{ => behavioral}/interpreter/Interpreter.php (100%) rename examples/php/{ => behavioral}/iterator/Iterator.md (100%) rename examples/php/{ => behavioral}/iterator/Iterator.png (100%) rename examples/php/{ => behavioral}/iterator/IteratorTest.php (96%) rename examples/php/{ => behavioral}/iterator/RadioStation.php (84%) rename examples/php/{ => behavioral}/iterator/StationList.php (96%) rename examples/php/{ => behavioral}/mediator/ChatRoom.php (91%) rename examples/php/{ => behavioral}/mediator/ChatRoomMediator.php (69%) rename examples/php/{ => behavioral}/mediator/Mediator.md (100%) rename examples/php/{ => behavioral}/mediator/Mediator.png (100%) rename examples/php/{ => behavioral}/mediator/MediatorTest.php (93%) rename examples/php/{ => behavioral}/mediator/User.php (90%) rename examples/php/{ => behavioral}/memento/Editor.php (91%) rename examples/php/{ => behavioral}/memento/EditorMemento.php (84%) rename examples/php/{ => behavioral}/memento/Memento.md (100%) rename examples/php/{ => behavioral}/memento/Memento.png (100%) rename examples/php/{ => behavioral}/memento/MementoTest.php (96%) rename examples/php/{ => behavioral}/observer/EmploymentAgency.php (92%) rename examples/php/{ => behavioral}/observer/JobPost.php (82%) rename examples/php/{ => behavioral}/observer/JobSeeker.php (91%) rename examples/php/{ => behavioral}/observer/Observable.php (80%) rename examples/php/{ => behavioral}/observer/Observer.md (100%) rename examples/php/{ => behavioral}/observer/Observer.php (63%) rename examples/php/{ => behavioral}/observer/Observer.png (100%) rename examples/php/{ => behavioral}/observer/ObserverTest.php (97%) rename examples/php/{ => behavioral}/state/DefaultText.php (75%) rename examples/php/{ => behavioral}/state/LowerCase.php (77%) rename examples/php/{ => behavioral}/state/State.md (100%) rename examples/php/{ => behavioral}/state/State.png (100%) rename examples/php/{ => behavioral}/state/StateTest.php (97%) rename examples/php/{ => behavioral}/state/TextEditor.php (89%) rename examples/php/{ => behavioral}/state/UpperCase.php (77%) rename examples/php/{ => behavioral}/state/WritingState.php (65%) rename examples/php/{ => behavioral}/strategy/BubbleSortStrategy.php (80%) rename examples/php/{ => behavioral}/strategy/QuickSortStrategy.php (79%) rename examples/php/{ => behavioral}/strategy/SortStrategy.php (64%) rename examples/php/{ => behavioral}/strategy/Sorter.php (85%) rename examples/php/{ => behavioral}/strategy/Strategy.md (100%) rename examples/php/{ => behavioral}/strategy/Strategy.png (100%) rename examples/php/{ => behavioral}/strategy/StrategyTest.php (93%) rename examples/php/{ => behavioral}/template_method/AndroidBuilder.php (88%) rename examples/php/{ => behavioral}/template_method/Builder.php (89%) rename examples/php/{ => behavioral}/template_method/IosBuilder.php (88%) rename examples/php/{ => behavioral}/template_method/TemplateMethod.md (100%) rename examples/php/{ => behavioral}/template_method/TemplateMethod.png (100%) rename examples/php/{ => behavioral}/template_method/TemplateMethodTest.php (94%) rename examples/php/{ => behavioral}/visitor/Animal.php (66%) rename examples/php/{ => behavioral}/visitor/AnimalOperation.php (81%) rename examples/php/{ => behavioral}/visitor/Dolphin.php (84%) rename examples/php/{ => behavioral}/visitor/Jump.php (90%) rename examples/php/{ => behavioral}/visitor/Lion.php (83%) rename examples/php/{ => behavioral}/visitor/Monkey.php (84%) rename examples/php/{ => behavioral}/visitor/Speak.php (88%) rename examples/php/{ => behavioral}/visitor/Visitor.md (100%) rename examples/php/{ => behavioral}/visitor/Visitor.png (100%) rename examples/php/{ => behavioral}/visitor/VisitorTest.php (97%) rename examples/php/{ => creational}/abstract_factory/AbstractFactory.md (100%) rename examples/php/{ => creational}/abstract_factory/AbstractFactory.png (100%) rename examples/php/{ => creational}/abstract_factory/AbstractFactoryTest.php (96%) rename examples/php/{ => creational}/abstract_factory/Carpenter.php (74%) rename examples/php/{ => creational}/abstract_factory/Door.php (57%) rename examples/php/{ => creational}/abstract_factory/DoorFactory.php (70%) rename examples/php/{ => creational}/abstract_factory/DoorFittingExpert.php (60%) rename examples/php/{ => creational}/abstract_factory/IronDoor.php (71%) rename examples/php/{ => creational}/abstract_factory/IronDoorFactory.php (81%) rename examples/php/{ => creational}/abstract_factory/Welder.php (73%) rename examples/php/{ => creational}/abstract_factory/WoodenDoor.php (71%) rename examples/php/{ => creational}/abstract_factory/WoodenDoorFactory.php (81%) rename examples/php/{ => creational}/builder/Builder.md (100%) rename examples/php/{ => creational}/builder/Builder.php (91%) rename examples/php/{ => creational}/builder/Builder.png (100%) rename examples/php/{ => creational}/builder/BuilderTest.php (91%) rename examples/php/{ => creational}/builder/BurgerBuilder.php (94%) rename examples/php/{ => creational}/factory_method/CommunityExecutive.php (75%) rename examples/php/{ => creational}/factory_method/Developer.php (74%) rename examples/php/{ => creational}/factory_method/DevelopmentManager.php (74%) rename examples/php/{ => creational}/factory_method/FactoryMethod.md (100%) rename examples/php/{ => creational}/factory_method/FactoryMethod.png (100%) rename examples/php/{ => creational}/factory_method/FactoryMethodTest.php (92%) rename examples/php/{ => creational}/factory_method/HiringManager.php (81%) rename examples/php/{ => creational}/factory_method/Interviewer.php (59%) rename examples/php/{ => creational}/factory_method/MarketingManager.php (75%) rename examples/php/{ => creational}/prototype/Prototype.md (100%) rename examples/php/{ => creational}/prototype/Prototype.png (100%) rename examples/php/{ => creational}/prototype/PrototypeTest.php (94%) rename examples/php/{ => creational}/prototype/Sheep.php (92%) rename examples/php/{ => creational}/simple_factory/Door.php (66%) rename examples/php/{ => creational}/simple_factory/DoorFactory.php (75%) rename examples/php/{ => creational}/simple_factory/SimpleFactory.md (100%) rename examples/php/{ => creational}/simple_factory/SimpleFactory.png (100%) rename examples/php/{ => creational}/simple_factory/SimpleFactoryTest.php (93%) rename examples/php/{ => creational}/simple_factory/WoodenDoor.php (88%) rename examples/php/{ => creational}/singleton/President.php (91%) rename examples/php/{ => creational}/singleton/Singleton.md (100%) rename examples/php/{ => creational}/singleton/Singleton.png (100%) rename examples/php/{ => creational}/singleton/SingletonTest.php (89%) rename examples/php/{ => structural}/adapter/Adapter.md (100%) rename examples/php/{ => structural}/adapter/Adapter.png (100%) rename examples/php/{ => structural}/adapter/AdapterTest.php (91%) rename examples/php/{ => structural}/adapter/AfricanLion.php (74%) rename examples/php/{ => structural}/adapter/AsianLion.php (73%) rename examples/php/{ => structural}/adapter/Hunter.php (70%) rename examples/php/{ => structural}/adapter/Lion.php (57%) rename examples/php/{ => structural}/adapter/WildDog.php (69%) rename examples/php/{ => structural}/adapter/WildDogAdapter.php (84%) rename examples/php/{ => structural}/bridge/About.php (85%) rename examples/php/{ => structural}/bridge/AquaTheme.php (73%) rename examples/php/{ => structural}/bridge/Bridge.md (100%) rename examples/php/{ => structural}/bridge/Bridge.png (100%) rename examples/php/{ => structural}/bridge/BridgeTest.php (95%) rename examples/php/{ => structural}/bridge/Careers.php (86%) rename examples/php/{ => structural}/bridge/DarkTheme.php (73%) rename examples/php/{ => structural}/bridge/LightTheme.php (73%) rename examples/php/{ => structural}/bridge/Theme.php (60%) rename examples/php/{ => structural}/bridge/WebPage.php (72%) rename examples/php/{ => structural}/composite/Composite.md (100%) rename examples/php/{ => structural}/composite/Composite.png (100%) rename examples/php/{ => structural}/composite/CompositeTest.php (94%) rename examples/php/{ => structural}/composite/Designer.php (92%) rename examples/php/{ => structural}/composite/Developer.php (92%) rename examples/php/{ => structural}/composite/Employee.php (84%) rename examples/php/{ => structural}/composite/Organization.php (89%) rename examples/php/{ => structural}/decorator/Coffee.php (70%) rename examples/php/{ => structural}/decorator/Decorator.md (100%) rename examples/php/{ => structural}/decorator/Decorator.png (100%) rename examples/php/{ => structural}/decorator/DecoratorTest.php (96%) rename examples/php/{ => structural}/decorator/MilkCoffee.php (88%) rename examples/php/{ => structural}/decorator/SimpleCoffee.php (81%) rename examples/php/{ => structural}/decorator/VanillaCoffee.php (88%) rename examples/php/{ => structural}/decorator/WhipCoffee.php (88%) rename examples/php/{ => structural}/facade/Computer.php (93%) rename examples/php/{ => structural}/facade/ComputerFacade.php (93%) rename examples/php/{ => structural}/facade/Facade.md (100%) rename examples/php/{ => structural}/facade/Facade.png (100%) rename examples/php/{ => structural}/facade/FacadeTest.php (92%) rename examples/php/{ => structural}/flyweight/Flyweight.md (100%) rename examples/php/{ => structural}/flyweight/Flyweight.png (100%) rename examples/php/{ => structural}/flyweight/FlyweightTest.php (93%) rename examples/php/{ => structural}/flyweight/KarakTea.php (70%) rename examples/php/{ => structural}/flyweight/TeaMaker.php (86%) rename examples/php/{ => structural}/flyweight/TeaShop.php (91%) rename examples/php/{ => structural}/proxy/Door.php (69%) rename examples/php/{ => structural}/proxy/LabDoor.php (82%) rename examples/php/{ => structural}/proxy/Proxy.md (100%) rename examples/php/{ => structural}/proxy/Proxy.png (100%) rename examples/php/{ => structural}/proxy/ProxyTest.php (92%) rename examples/php/{ => structural}/proxy/SecuredDoor.php (92%) diff --git a/examples/php/chain_of_responsibility/Account.php b/examples/php/behavioral/chain_of_responsibility/Account.php similarity index 94% rename from examples/php/chain_of_responsibility/Account.php rename to examples/php/behavioral/chain_of_responsibility/Account.php index eefb192f..11a927c3 100644 --- a/examples/php/chain_of_responsibility/Account.php +++ b/examples/php/behavioral/chain_of_responsibility/Account.php @@ -1,6 +1,6 @@ Date: Fri, 14 Oct 2022 22:09:53 +0800 Subject: [PATCH 3/4] feat: remove md files --- .../chain_of_responsibility/ChainOfResponsibility.md | 11 ----------- examples/php/behavioral/command/Command.md | 11 ----------- examples/php/behavioral/interpreter/Interpreter.md | 10 ---------- examples/php/behavioral/iterator/Iterator.md | 11 ----------- examples/php/behavioral/mediator/Mediator.md | 11 ----------- examples/php/behavioral/memento/Memento.md | 11 ----------- examples/php/behavioral/observer/Observer.md | 11 ----------- examples/php/behavioral/state/State.md | 11 ----------- examples/php/behavioral/strategy/Strategy.md | 11 ----------- .../php/behavioral/template_method/TemplateMethod.md | 11 ----------- examples/php/behavioral/visitor/Visitor.md | 11 ----------- .../creational/abstract_factory/AbstractFactory.md | 11 ----------- examples/php/creational/builder/Builder.md | 11 ----------- .../php/creational/factory_method/FactoryMethod.md | 11 ----------- examples/php/creational/prototype/Prototype.md | 11 ----------- .../php/creational/simple_factory/SimpleFactory.md | 11 ----------- examples/php/creational/singleton/Singleton.md | 11 ----------- examples/php/structural/adapter/Adapter.md | 11 ----------- examples/php/structural/bridge/Bridge.md | 11 ----------- examples/php/structural/composite/Composite.md | 11 ----------- examples/php/structural/decorator/Decorator.md | 11 ----------- examples/php/structural/facade/Facade.md | 7 ------- examples/php/structural/flyweight/Flyweight.md | 11 ----------- examples/php/structural/proxy/Proxy.md | 11 ----------- 24 files changed, 259 deletions(-) delete mode 100644 examples/php/behavioral/chain_of_responsibility/ChainOfResponsibility.md delete mode 100644 examples/php/behavioral/command/Command.md delete mode 100644 examples/php/behavioral/interpreter/Interpreter.md delete mode 100644 examples/php/behavioral/iterator/Iterator.md delete mode 100644 examples/php/behavioral/mediator/Mediator.md delete mode 100644 examples/php/behavioral/memento/Memento.md delete mode 100644 examples/php/behavioral/observer/Observer.md delete mode 100644 examples/php/behavioral/state/State.md delete mode 100644 examples/php/behavioral/strategy/Strategy.md delete mode 100644 examples/php/behavioral/template_method/TemplateMethod.md delete mode 100644 examples/php/behavioral/visitor/Visitor.md delete mode 100644 examples/php/creational/abstract_factory/AbstractFactory.md delete mode 100644 examples/php/creational/builder/Builder.md delete mode 100644 examples/php/creational/factory_method/FactoryMethod.md delete mode 100644 examples/php/creational/prototype/Prototype.md delete mode 100644 examples/php/creational/simple_factory/SimpleFactory.md delete mode 100644 examples/php/creational/singleton/Singleton.md delete mode 100644 examples/php/structural/adapter/Adapter.md delete mode 100644 examples/php/structural/bridge/Bridge.md delete mode 100644 examples/php/structural/composite/Composite.md delete mode 100644 examples/php/structural/decorator/Decorator.md delete mode 100644 examples/php/structural/facade/Facade.md delete mode 100644 examples/php/structural/flyweight/Flyweight.md delete mode 100644 examples/php/structural/proxy/Proxy.md diff --git a/examples/php/behavioral/chain_of_responsibility/ChainOfResponsibility.md b/examples/php/behavioral/chain_of_responsibility/ChainOfResponsibility.md deleted file mode 100644 index 546bd959..00000000 --- a/examples/php/behavioral/chain_of_responsibility/ChainOfResponsibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# 责任链模式 Chain Of Responsibility - -## 概述 -> 通俗解释:它有助于构建一系列对象。请求从一端进入并持续从一个对象到另一个对象,直到找到合适的处理程序。 - -> 维基百科:在面向对象的设计中,责任链模式是一种由命令对象源和一系列处理对象组成的设计模式。每个处理对象都包含定义它可以处理的命令对象类型的逻辑; 其余的传递给链中的下一个处理对象。 - -> 使用场景:略。 - -## 类图 -![](ChainOfResponsibility.png) \ No newline at end of file diff --git a/examples/php/behavioral/command/Command.md b/examples/php/behavioral/command/Command.md deleted file mode 100644 index fb862998..00000000 --- a/examples/php/behavioral/command/Command.md +++ /dev/null @@ -1,11 +0,0 @@ -# 命令模式 Command - -## 概述 -> 通俗解释:允许您将操作封装在对象中。这种模式背后的关键思想是提供将客户端与接收器分离的方法。 - -> 维基百科:在面向对象的编程中,命令模式是行为设计模式,在这种模式中对象用于封装执行动作或稍后触发事件所需的所有信息。此信息包括方法名称,拥有该方法的对象以及方法参数的值。 - -> 使用场景:略。 - -## 类图 -![](Command.png) diff --git a/examples/php/behavioral/interpreter/Interpreter.md b/examples/php/behavioral/interpreter/Interpreter.md deleted file mode 100644 index c0333060..00000000 --- a/examples/php/behavioral/interpreter/Interpreter.md +++ /dev/null @@ -1,10 +0,0 @@ -# 解释器模式 Interpreter - -## 概述 -> 通俗解释: - -> 维基百科: - -> 使用场景: - -## 类图 diff --git a/examples/php/behavioral/iterator/Iterator.md b/examples/php/behavioral/iterator/Iterator.md deleted file mode 100644 index 43b51db1..00000000 --- a/examples/php/behavioral/iterator/Iterator.md +++ /dev/null @@ -1,11 +0,0 @@ -# 迭代器模式 Iterator - -## 概述 -> 通俗解释:它提供了一种访问对象元素而不暴露底层表示的方法。 - -> 维基百科:在面向对象的编程中,迭代器模式是一种用于遍历容器并访问容器的元素的设计模式。迭代器模式将算法与容器分离; 在某些情况下,算法必然是特定于容器的,因此不能解耦。 - -> 使用场景:略。 - -## 类图 -![](Iterator.png) \ No newline at end of file diff --git a/examples/php/behavioral/mediator/Mediator.md b/examples/php/behavioral/mediator/Mediator.md deleted file mode 100644 index 6086d49a..00000000 --- a/examples/php/behavioral/mediator/Mediator.md +++ /dev/null @@ -1,11 +0,0 @@ -# 中介者模式 Mediator - -## 概述 -> 通俗解释:Mediator 模式添加第三方对象(称为中介者)来控制两个对象(称为同事)之间的交互。它有助于减少彼此通信的类之间的耦合。因为现在他们不需要了解彼此的实现。 - -> 维基百科:在软件工程中,中介模式定义了一个对象,该对象封装了一组对象的交互方式。由于它可以改变程序的运行行为,因此这种模式被认为是一种行为模式。 - -> 使用场景:略。 - -## 类图 -![](Mediator.png) \ No newline at end of file diff --git a/examples/php/behavioral/memento/Memento.md b/examples/php/behavioral/memento/Memento.md deleted file mode 100644 index 8379e036..00000000 --- a/examples/php/behavioral/memento/Memento.md +++ /dev/null @@ -1,11 +0,0 @@ -# 备忘录模式 Memento - -## 概述 -> 通俗解释:备忘录模式是关于获取和存储对象的当前状态,以一种能够用平滑方式恢复的方式。 - -> 维基百科:备忘录模式是一种软件设计模式,它提供将对象恢复到其先前状态的能力(通过回滚撤消)。 - -> 使用场景:略。 - -## 类图 -![](Memento.png) \ No newline at end of file diff --git a/examples/php/behavioral/observer/Observer.md b/examples/php/behavioral/observer/Observer.md deleted file mode 100644 index 5bc5fe60..00000000 --- a/examples/php/behavioral/observer/Observer.md +++ /dev/null @@ -1,11 +0,0 @@ -# 观察者模式 Observer - -## 概述 -> 通俗解释:定义对象之间的依赖关系,以便每当对象更改其状态时,都会通知其所有依赖项。 - -> 维基百科:观察者模式是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并在有任何状态变化时自动通知它们,常通过调用它们的某个方法。 - -> 使用场景:略。 - -## 类图 -![](Observer.png) \ No newline at end of file diff --git a/examples/php/behavioral/state/State.md b/examples/php/behavioral/state/State.md deleted file mode 100644 index b7fa641e..00000000 --- a/examples/php/behavioral/state/State.md +++ /dev/null @@ -1,11 +0,0 @@ -# 状态模式 State - -## 概述 -> 通俗解释:它允许您在状态更改时更改类的行为。 - -> 维基百科:状态模式是一种行为软件设计模式,它以面向对象的方式实现状态机。使用状态模式,通过将每个单独的状态实现为状态模式接口的派生类来实现状态机,并通过调用由模式的超类定义的方法来实现状态转换。状态模式可以解释为能够通过调用模式接口中定义的方法来切换当前策略的一种策略模式。 - -> 使用场景:略。 - -## 类图 -![](State.png) \ No newline at end of file diff --git a/examples/php/behavioral/strategy/Strategy.md b/examples/php/behavioral/strategy/Strategy.md deleted file mode 100644 index aa42d3f6..00000000 --- a/examples/php/behavioral/strategy/Strategy.md +++ /dev/null @@ -1,11 +0,0 @@ -# 策略模式 Strategy - -## 概述 -> 通俗解释:策略模式允许您根据情况切换算法或策略。 - -> 维基百科:在计算机编程中,策略模式(也称为政策模式)是一种行为软件设计模式,可以在运行时选择算法的行为。 - -> 使用场景:略。 - -## 类图 -![](Strategy.png) \ No newline at end of file diff --git a/examples/php/behavioral/template_method/TemplateMethod.md b/examples/php/behavioral/template_method/TemplateMethod.md deleted file mode 100644 index a4d87842..00000000 --- a/examples/php/behavioral/template_method/TemplateMethod.md +++ /dev/null @@ -1,11 +0,0 @@ -# 模板方法模式 Template Method - -## 概述 -> 通俗解释:模板方法定义了如何执行某个算法的框架,但是将这些步骤的实现推迟到子类。 - -> 维基百科:在软件工程中,模板方法模式是一种行为设计模式,它定义了操作中算法的程序框架,将一些步骤推迟到子类。它允许重新定义算法的某些步骤而不改变算法的结构。 - -> 使用场景:略。 - -## 类图 -![](TemplateMethod.png) \ No newline at end of file diff --git a/examples/php/behavioral/visitor/Visitor.md b/examples/php/behavioral/visitor/Visitor.md deleted file mode 100644 index 57aa18cc..00000000 --- a/examples/php/behavioral/visitor/Visitor.md +++ /dev/null @@ -1,11 +0,0 @@ -# 访问者模式 Visitor - -## 概述 -> 通俗解释:访客模式允许您向对象添加更多操作,而无需修改它们。 - -> 维基百科:在面向对象的编程和软件工程中,访问者设计模式是一种将算法与其运行的对象结构分离的方法。这种分离的实际结果是能够在不修改这些结构的情况下向现有对象结构添加新操作。这是遵循开放/封闭原则的一种方式。 - -> 使用场景:略。 - -## 类图 -![](Visitor.png) \ No newline at end of file diff --git a/examples/php/creational/abstract_factory/AbstractFactory.md b/examples/php/creational/abstract_factory/AbstractFactory.md deleted file mode 100644 index e2ac5427..00000000 --- a/examples/php/creational/abstract_factory/AbstractFactory.md +++ /dev/null @@ -1,11 +0,0 @@ -# 抽象工厂模式 Abstract Factory - -## 概述 -> 通俗解释:工厂的工厂; 一个将单个但相关/从属的工厂分组在一起而没有指定其具体类别的工厂。 - -> 维基百科:抽象工厂模式提供了一种封装一组具有共同主题但没有指定其具体类的单个工厂的方法。 - -> 使用场景:当涉及到不那么简单的,存在相互依赖关系的创建逻辑时使用。 - -## 类图 -![](AbstractFactory.png) \ No newline at end of file diff --git a/examples/php/creational/builder/Builder.md b/examples/php/creational/builder/Builder.md deleted file mode 100644 index 3883f86f..00000000 --- a/examples/php/creational/builder/Builder.md +++ /dev/null @@ -1,11 +0,0 @@ -# 建造者模式 Builder - -## 概述 -> 通俗解释:允许您创建不同风格的对象,同时避免构造函数污染。当一个对象有多种风格时很有用。或者当一个对象创建时涉及很多步骤。 - -> 维基百科:建造者模式是一种创建对象的软件设计模式,其目的是找到伸缩构造器反模式的解决方案。 - -> 使用场景:当一个对象可能存在几种类型并避免构造函数伸缩时使用。与工厂模式的主要区别在于:当创建是一步过程时,将使用工厂模式,而当创建是多步骤过程时,将使用建造者模式。 - -## 类图 -![](Builder.png) diff --git a/examples/php/creational/factory_method/FactoryMethod.md b/examples/php/creational/factory_method/FactoryMethod.md deleted file mode 100644 index 8568d105..00000000 --- a/examples/php/creational/factory_method/FactoryMethod.md +++ /dev/null @@ -1,11 +0,0 @@ -# 工厂方法模式 Factory Method - -## 概述 -> 通俗解释:它提供了一种将实例化逻辑委托给子类的方法。 - -> 维基百科:在基于类的编程中,工厂方法模式是一种创建模式,它使用工厂方法来处理创建对象的问题,而无需指定将要创建的对象的确切类。这是通过调用工厂方法来创建对象来完成的 - 在接口中指定并由子类实现,或者在基类中实现并可选地由派生类覆盖 - 而不是通过调用构造函数。 - -> 使用场景:在类中有一些通用处理但在运行时动态决定所需的子类时很有用。换句话说,当客户端不知道它可能需要什么样的子类时。 - -## 类图 -![](FactoryMethod.png) diff --git a/examples/php/creational/prototype/Prototype.md b/examples/php/creational/prototype/Prototype.md deleted file mode 100644 index 418d02a8..00000000 --- a/examples/php/creational/prototype/Prototype.md +++ /dev/null @@ -1,11 +0,0 @@ -# 原型模式 Prototype - -## 概述 -> 通俗解释:通过克隆现有对象创建对象。 - -> 维基百科:原型模式是软件开发中的一种创建型的设计模式。当要创建的对象类型由原型实例确定时使用它,该实例被克隆以生成新对象。 - -> 使用场景:当需要一个与现有对象类似的对象时,或者与克隆相比,创建的成本会很高。 - -## 类图 -![](Prototype.png) \ No newline at end of file diff --git a/examples/php/creational/simple_factory/SimpleFactory.md b/examples/php/creational/simple_factory/SimpleFactory.md deleted file mode 100644 index 8ff365d6..00000000 --- a/examples/php/creational/simple_factory/SimpleFactory.md +++ /dev/null @@ -1,11 +0,0 @@ -# 简单工厂模式 Simple Factory - -## 概述 -> 通俗解释:简单工厂只是为客户端生成一个实例,而不会向客户端公开任何实例化逻辑。 - -> 维基百科:在面向对象编程(OOP)中,工厂是用于创建其他对象的对象 - 正式工厂是一种函数或方法,它从一些方法调用返回变化的原型或类的对象,这被假定为“新”。 - -> 使用场景:当创建一个对象不仅仅是一些分配而且涉及一些逻辑时,将它放在专用工厂中而不是在任何地方重复相同的代码是有意义的。 - -## 类图 -![](SimpleFactory.png) \ No newline at end of file diff --git a/examples/php/creational/singleton/Singleton.md b/examples/php/creational/singleton/Singleton.md deleted file mode 100644 index 46dfda06..00000000 --- a/examples/php/creational/singleton/Singleton.md +++ /dev/null @@ -1,11 +0,0 @@ -# 单例模式 Singleton - -## 概述 -> 通俗解释:确保只有特定类的一个对象被创建。 - -> 维基百科:在软件工程中,单例模式是一种软件设计模式,它将类的实例化限制为一个对象。当仅需要一个对象来协调整个系统的操作时,这非常有用。 - -> 使用场景:略。 - -## 类图 -![](Singleton.png) \ No newline at end of file diff --git a/examples/php/structural/adapter/Adapter.md b/examples/php/structural/adapter/Adapter.md deleted file mode 100644 index 6ce6f74b..00000000 --- a/examples/php/structural/adapter/Adapter.md +++ /dev/null @@ -1,11 +0,0 @@ -# 适配器模式 Adapter - -## 概述 -> 通俗解释:适配器模式允许您在适配器中包装其他不兼容的对象,使其与另一个类兼容。 - -> 维基百科:在软件工程中,适配器模式是一种软件设计模式,它允许将现有类的接口用作另一个接口。它通常用于使现有类与其他类一起工作而无需修改其源代码。 - -> 使用场景:略。 - -## 类图 -![](Adapter.png) diff --git a/examples/php/structural/bridge/Bridge.md b/examples/php/structural/bridge/Bridge.md deleted file mode 100644 index aeb49a2d..00000000 --- a/examples/php/structural/bridge/Bridge.md +++ /dev/null @@ -1,11 +0,0 @@ -# 桥接模式 Bridge - -## 概述 -> 通俗解释:桥接模式是关于优先于继承的组合。实现细节从层次结构推送到具有单独层次结构的另一个对象。 - -> 维基百科:桥接模式是软件工程中使用的设计模式,旨在“将抽象与其实现分离,以便两者可以独立变化”。 - -> 使用场景:略。 - -## 类图 -![](Bridge.png) \ No newline at end of file diff --git a/examples/php/structural/composite/Composite.md b/examples/php/structural/composite/Composite.md deleted file mode 100644 index 29f12499..00000000 --- a/examples/php/structural/composite/Composite.md +++ /dev/null @@ -1,11 +0,0 @@ -# 组合模式 Composite - -## 概述 -> 通俗解释:组合模式允许客户以统一的方式处理单个对象。 - -> 维基百科:在软件工程中,复合模式是分区设计模式。复合模式描述了一组对象的处理方式与对象的单个实例相同。复合的意图是将对象“组合”成树结构以表示部分整体层次结构。通过实现复合模式,客户可以统一处理单个对象和组合。 - -> 使用场景:略。 - -## 类图 -![](Composite.png) diff --git a/examples/php/structural/decorator/Decorator.md b/examples/php/structural/decorator/Decorator.md deleted file mode 100644 index 8674d1f1..00000000 --- a/examples/php/structural/decorator/Decorator.md +++ /dev/null @@ -1,11 +0,0 @@ -# 装饰模式 Decorator - -## 概述 -> 通俗解释:装饰器模式允许您通过将对象包装在装饰器类的对象中来动态更改对象在运行时的行为。 - -> 维基百科:在面向对象的编程中,装饰器模式是一种设计模式,它允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为。装饰器模式通常用于遵守单一责任原则,因为它允许在具有独特关注区域的类之间划分功能。 - -> 使用场景:略。 - -## 类图 -![](Decorator.png) \ No newline at end of file diff --git a/examples/php/structural/facade/Facade.md b/examples/php/structural/facade/Facade.md deleted file mode 100644 index 8adc781e..00000000 --- a/examples/php/structural/facade/Facade.md +++ /dev/null @@ -1,7 +0,0 @@ -# 外观模式 Facade - -> 通俗解释:外观模式为复杂的子系统提供了简化的界面。 - -> 维基百科:外观是一个为更大的代码体提供简化的接口的对象,例如一个类库。 - -> 使用场景:略。 diff --git a/examples/php/structural/flyweight/Flyweight.md b/examples/php/structural/flyweight/Flyweight.md deleted file mode 100644 index f3cf1442..00000000 --- a/examples/php/structural/flyweight/Flyweight.md +++ /dev/null @@ -1,11 +0,0 @@ -# 享元模式 Flyweight - -## 概述 -> 通俗解释:它用于通过尽可能多地与类似对象共享来最小化内存使用或计算开销。 - -> 维基百科:在计算机编程中,享元是一种软件设计模式。享元是一个通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象; 当一个简单重复的表示会使用不可接受的内存量时,它是一种大量使用对象的方法。 - -> 使用场景:略。 - -## 类图 -![](Flyweight.png) \ No newline at end of file diff --git a/examples/php/structural/proxy/Proxy.md b/examples/php/structural/proxy/Proxy.md deleted file mode 100644 index ac4e7a11..00000000 --- a/examples/php/structural/proxy/Proxy.md +++ /dev/null @@ -1,11 +0,0 @@ -# 代理模式 Proxy - -## 概述 -> 通俗解释:使用代理模式,一个类表示另一个类的功能。 - -> 维基百科:代理最一般的形式,是一个充当其他东西的接口的类。代理是一个包装器或代理对象,用来被客户端调用以访问幕后的提供服务的真实对象。使用代理可以简单地转发到真实对象,或者可以提供额外的逻辑。在代理中,可以提供额外的功能,例如当对真实对象的操作是资源密集时进行缓存,或者在调用对象的操作之前检查先决条件。 - -> 使用场景:略。 - -## 类图 -![](Proxy.png) \ No newline at end of file From 063b049934cdcc57a0a12cd48413327d27ff9fab Mon Sep 17 00:00:00 2001 From: raw34 Date: Fri, 14 Oct 2022 22:17:06 +0800 Subject: [PATCH 4/4] feat: update gitignore file --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index dc9ed0d0..3d4b9b68 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .idea/ -examples/php/vendor +vendor composer.lock .phpunit.result.cache

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�!>u3gx@Eo=*-BC-)MiXfY=0@5Ui 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 B7V7{2 literal 0 HcmV?d00001 diff --git a/examples/php/proxy/ProxyTest.php b/examples/php/proxy/ProxyTest.php new file mode 100644 index 00000000..d58e945d --- /dev/null +++ b/examples/php/proxy/ProxyTest.php @@ -0,0 +1,25 @@ +open('invalid'); // Big no! It ain't possible. + +$door->open('$ecr@t'); // Opening lab door +$door->close(); // Closing lab door +*/ + +class ProxyTest extends TestCase +{ + public function test01(): void + { + $door = new SecuredDoor(new LabDoor()); + + self::assertEquals("Big no! It ain't possible.", $door->open('invalid')); + self::assertEquals('Opening lab door', $door->open('$ecr@t')); + self::assertEquals('Closing lab door', $door->close()); + } +} diff --git a/examples/php/proxy/SecuredDoor.php b/examples/php/proxy/SecuredDoor.php new file mode 100644 index 00000000..ecca2467 --- /dev/null +++ b/examples/php/proxy/SecuredDoor.php @@ -0,0 +1,32 @@ +door = $door; + } + + public function open(string $password): string + { + if (!$this->authenticate($password)) { + return "Big no! It ain't possible."; + } + + return $this->door->open(); + } + + public function authenticate(string $password): bool + { + return $password === '$ecr@t'; + } + + public function close(): string + { + return $this->door->close(); + } +} diff --git a/examples/php/simple_factory/Door.php b/examples/php/simple_factory/Door.php new file mode 100644 index 00000000..aca4896e --- /dev/null +++ b/examples/php/simple_factory/Door.php @@ -0,0 +1,9 @@ + 通俗解释:简单工厂只是为客户端生成一个实例,而不会向客户端公开任何实例化逻辑。 + +> 维基百科:在面向对象编程(OOP)中,工厂是用于创建其他对象的对象 - 正式工厂是一种函数或方法,它从一些方法调用返回变化的原型或类的对象,这被假定为“新”。 + +> 使用场景:当创建一个对象不仅仅是一些分配而且涉及一些逻辑时,将它放在专用工厂中而不是在任何地方重复相同的代码是有意义的。 + +## 类图 +![](SimpleFactory.png) \ No newline at end of file diff --git a/examples/php/simple_factory/SimpleFactory.png b/examples/php/simple_factory/SimpleFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..6c44270f8edc7650395a82366c5a0fed3f254269 GIT binary patch literal 38838 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 literal 0 HcmV?d00001 diff --git a/examples/php/simple_factory/SimpleFactoryTest.php b/examples/php/simple_factory/SimpleFactoryTest.php new file mode 100644 index 00000000..9c00e5bc --- /dev/null +++ b/examples/php/simple_factory/SimpleFactoryTest.php @@ -0,0 +1,32 @@ +getWidth(); +//echo 'Height: ' . $door->getHeight(); +// +//// Make me a door of 50x100 +//$door2 = DoorFactory::makeDoor(50, 100); + +class SimpleFactoryTest extends TestCase +{ + public function test01(): void + { + $door = DoorFactory::makeDoor(100, 200); + self::assertEquals(100, $door->getWidth()); + self::assertEquals(200, $door->getHeight()); + } + + public function test02(): void + { + $door2 = DoorFactory::makeDoor(50, 100); + self::assertEquals(50, $door2->getWidth()); + self::assertEquals(100, $door2->getHeight()); + } +} diff --git a/examples/php/simple_factory/WoodenDoor.php b/examples/php/simple_factory/WoodenDoor.php new file mode 100644 index 00000000..419a5699 --- /dev/null +++ b/examples/php/simple_factory/WoodenDoor.php @@ -0,0 +1,25 @@ +width = $width; + $this->height = $height; + } + + public function getWidth(): float + { + return $this->width; + } + + public function getHeight(): float + { + return $this->height; + } +} diff --git a/examples/php/singleton/President.php b/examples/php/singleton/President.php new file mode 100644 index 00000000..9120016e --- /dev/null +++ b/examples/php/singleton/President.php @@ -0,0 +1,32 @@ + 通俗解释:确保只有特定类的一个对象被创建。 + +> 维基百科:在软件工程中,单例模式是一种软件设计模式,它将类的实例化限制为一个对象。当仅需要一个对象来协调整个系统的操作时,这非常有用。 + +> 使用场景:略。 + +## 类图 +![](Singleton.png) \ No newline at end of file diff --git a/examples/php/singleton/Singleton.png b/examples/php/singleton/Singleton.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd8db1a34206c2f759c560e8849e93df86fbebb GIT binary patch literal 20558 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 literal 0 HcmV?d00001 diff --git a/examples/php/singleton/SingletonTest.php b/examples/php/singleton/SingletonTest.php new file mode 100644 index 00000000..f0d477d3 --- /dev/null +++ b/examples/php/singleton/SingletonTest.php @@ -0,0 +1,23 @@ + 通俗解释:它允许您在状态更改时更改类的行为。 + +> 维基百科:状态模式是一种行为软件设计模式,它以面向对象的方式实现状态机。使用状态模式,通过将每个单独的状态实现为状态模式接口的派生类来实现状态机,并通过调用由模式的超类定义的方法来实现状态转换。状态模式可以解释为能够通过调用模式接口中定义的方法来切换当前策略的一种策略模式。 + +> 使用场景:略。 + +## 类图 +![](State.png) \ No newline at end of file diff --git a/examples/php/state/State.png b/examples/php/state/State.png new file mode 100644 index 0000000000000000000000000000000000000000..e23f0148c099ab2cead9c3b8eb7c158a883ec31a GIT binary patch literal 41721 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 ToIb8x2h!*1>gTe~DWM4fQ^;M> literal 0 HcmV?d00001 diff --git a/examples/php/state/StateTest.php b/examples/php/state/StateTest.php new file mode 100644 index 00000000..f1b76ea0 --- /dev/null +++ b/examples/php/state/StateTest.php @@ -0,0 +1,76 @@ +type('First line'); + +$editor->setState(new UpperCase()); + +$editor->type('Second line'); +$editor->type('Third line'); + +$editor->setState(new LowerCase()); + +$editor->type('Fourth line'); +$editor->type('Fifth line'); + +// Output: +// First line +// SECOND LINE +// THIRD LINE +// fourth line +// fifth line +*/ +class StateTest extends TestCase +{ + protected function setUp(): void + { + parent::setUp(); + echo 1, "\n"; + } + + public function test01():void + { + $editor = new TextEditor(new DefaultText()); + + self::assertEquals('First line', $editor->type('First line')); + + $editor->setState(new UpperCase()); + + self::assertEquals('SECOND LINE', $editor->type('Second line')); + self::assertEquals('THIRD LINE', $editor->type('Third line')); + + $editor->setState(new LowerCase()); + + self::assertEquals('fourth line', $editor->type('Fourth line')); + self::assertEquals('fifth line', $editor->type('Fifth line')); + } + + public function test02():void + { + $editor = new TextEditor(new DefaultText()); + + self::assertEquals('First line', $editor->type('First line')); + + $editor->setState(new UpperCase()); + + self::assertEquals('SECOND LINE', $editor->type('Second line')); + self::assertEquals('THIRD LINE', $editor->type('Third line')); + + $editor->setState(new LowerCase()); + + self::assertEquals('fourth line', $editor->type('Fourth line')); + self::assertEquals('fifth line', $editor->type('Fifth line')); + } + + protected function tearDown(): void + { + parent::tearDown(); + echo 2, "\n"; + } +} diff --git a/examples/php/state/TextEditor.php b/examples/php/state/TextEditor.php new file mode 100644 index 00000000..f6515f65 --- /dev/null +++ b/examples/php/state/TextEditor.php @@ -0,0 +1,23 @@ +state = $state; + } + + public function setState(WritingState $state): void + { + $this->state = $state; + } + + public function type(string $words): string + { + return $this->state->write($words); + } +} diff --git a/examples/php/state/UpperCase.php b/examples/php/state/UpperCase.php new file mode 100644 index 00000000..1921e2ac --- /dev/null +++ b/examples/php/state/UpperCase.php @@ -0,0 +1,11 @@ +sorter = $sorter; + } + + public function sort(array $dataset): string + { + return $this->sorter->sort($dataset); + } +} diff --git a/examples/php/strategy/Strategy.md b/examples/php/strategy/Strategy.md new file mode 100644 index 00000000..aa42d3f6 --- /dev/null +++ b/examples/php/strategy/Strategy.md @@ -0,0 +1,11 @@ +# 策略模式 Strategy + +## 概述 +> 通俗解释:策略模式允许您根据情况切换算法或策略。 + +> 维基百科:在计算机编程中,策略模式(也称为政策模式)是一种行为软件设计模式,可以在运行时选择算法的行为。 + +> 使用场景:略。 + +## 类图 +![](Strategy.png) \ No newline at end of file diff --git a/examples/php/strategy/Strategy.png b/examples/php/strategy/Strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9e89ed33288bf982bbf82bb52f1b3f35469210 GIT binary patch literal 36040 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 UK_$ZN+w-WVqsort($dataset); // Output : Sorting using bubble sort + +$sorter = new Sorter(new QuickSortStrategy()); +$sorter->sort($dataset); // Output : Sorting using quick sort +*/ + +class StrategyTest extends TestCase +{ + public function test01(): void + { + $dataset = [1, 5, 4, 3, 2, 8]; + + $sorter = new Sorter(new BubbleSortStrategy()); + self::assertEquals('Sorting using bubble sort', $sorter->sort($dataset)); + + $sorter = new Sorter(new QuickSortStrategy()); + self::assertEquals('Sorting using quick sort', $sorter->sort($dataset)); + } +} diff --git a/examples/php/template_method/AndroidBuilder.php b/examples/php/template_method/AndroidBuilder.php new file mode 100644 index 00000000..2e1a4862 --- /dev/null +++ b/examples/php/template_method/AndroidBuilder.php @@ -0,0 +1,26 @@ +test(), + $this->lint(), + $this->assemble(), + $this->deploy() + ); + } + + abstract public function test(): string; + abstract public function lint(): string; + abstract public function assemble(): string; + abstract public function deploy(): string; +} diff --git a/examples/php/template_method/IosBuilder.php b/examples/php/template_method/IosBuilder.php new file mode 100644 index 00000000..a885323c --- /dev/null +++ b/examples/php/template_method/IosBuilder.php @@ -0,0 +1,26 @@ + 通俗解释:模板方法定义了如何执行某个算法的框架,但是将这些步骤的实现推迟到子类。 + +> 维基百科:在软件工程中,模板方法模式是一种行为设计模式,它定义了操作中算法的程序框架,将一些步骤推迟到子类。它允许重新定义算法的某些步骤而不改变算法的结构。 + +> 使用场景:略。 + +## 类图 +![](TemplateMethod.png) \ No newline at end of file diff --git a/examples/php/template_method/TemplateMethod.png b/examples/php/template_method/TemplateMethod.png new file mode 100644 index 0000000000000000000000000000000000000000..3b579a36eb96c2c36c47333e2d8fa478e60826db GIT binary patch literal 36065 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 DW1V3D literal 0 HcmV?d00001 diff --git a/examples/php/bridge/BridgeTest.php b/examples/php/bridge/BridgeTest.php new file mode 100644 index 00000000..bb51594b --- /dev/null +++ b/examples/php/bridge/BridgeTest.php @@ -0,0 +1,40 @@ +getContent(); // "About page in Dark Black"; +echo $careers->getContent(); // "Careers page in Dark Black"; +*/ + +class BridgeTest extends TestCase +{ + public function test01(): void + { + $darkTheme = new DarkTheme(); + + $about = new About($darkTheme); + $careers = new Careers($darkTheme); + + $this->assertEquals('About page in Dark Black', $about->getContent()); + $this->assertEquals('Careers page in Dark Black', $careers->getContent()); + } + + public function test02(): void + { + $lightTheme = new LightTheme(); + + $about = new About($lightTheme); + $careers = new Careers($lightTheme); + + $this->assertEquals('About page in Off White', $about->getContent()); + $this->assertEquals('Careers page in Off White', $careers->getContent()); + } +} diff --git a/examples/php/bridge/Careers.php b/examples/php/bridge/Careers.php new file mode 100644 index 00000000..db831e71 --- /dev/null +++ b/examples/php/bridge/Careers.php @@ -0,0 +1,18 @@ +theme = $theme; + } + + public function getContent(): string + { + return "Careers page in " . $this->theme->getColor(); + } +} diff --git a/examples/php/bridge/DarkTheme.php b/examples/php/bridge/DarkTheme.php new file mode 100644 index 00000000..a7e3e63b --- /dev/null +++ b/examples/php/bridge/DarkTheme.php @@ -0,0 +1,11 @@ + 通俗解释:允许您创建不同风格的对象,同时避免构造函数污染。当一个对象有多种风格时很有用。或者当一个对象创建时涉及很多步骤。 + +> 维基百科:建造者模式是一种创建对象的软件设计模式,其目的是找到伸缩构造器反模式的解决方案。 + +> 使用场景:当一个对象可能存在几种类型并避免构造函数伸缩时使用。与工厂模式的主要区别在于:当创建是一步过程时,将使用工厂模式,而当创建是多步骤过程时,将使用建造者模式。 + +## 类图 +![](Builder.png) diff --git a/examples/php/builder/Builder.php b/examples/php/builder/Builder.php new file mode 100644 index 00000000..b5d56514 --- /dev/null +++ b/examples/php/builder/Builder.php @@ -0,0 +1,22 @@ +size = $builder->size; + $this->cheese = $builder->cheese; + $this->pepperoni = $builder->pepperoni; + $this->lettuce = $builder->lettuce; + $this->tomato = $builder->tomato; + } +} diff --git a/examples/php/builder/Builder.png b/examples/php/builder/Builder.png new file mode 100644 index 0000000000000000000000000000000000000000..525b592337f51c65ccf3c9339f86c22fe13f3596 GIT binary patch literal 43578 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 nGzf!(2*~nd8C67a5PbaK6ngTe~DWM4fy)*|i literal 0 HcmV?d00001 diff --git a/examples/php/builder/BuilderTest.php b/examples/php/builder/BuilderTest.php new file mode 100644 index 00000000..36222f89 --- /dev/null +++ b/examples/php/builder/BuilderTest.php @@ -0,0 +1,23 @@ +addPepperoni() + ->addLettuce() + ->addTomato() + ->build(); + + self::assertEquals(14, $burger->size); + self::assertFalse($burger->cheese); + self::assertTrue($burger->pepperoni); + self::assertTrue($burger->lettuce); + self::assertTrue($burger->tomato); + } +} diff --git a/examples/php/builder/BurgerBuilder.php b/examples/php/builder/BurgerBuilder.php new file mode 100644 index 00000000..bdce4ad8 --- /dev/null +++ b/examples/php/builder/BurgerBuilder.php @@ -0,0 +1,47 @@ +size = $size; + } + + public function addPepperoni(): BurgerBuilder + { + $this->pepperoni = true; + return $this; + } + + public function addLettuce(): BurgerBuilder + { + $this->lettuce = true; + return $this; + } + + public function addCheese(): BurgerBuilder + { + $this->cheese = true; + return $this; + } + + public function addTomato(): BurgerBuilder + { + $this->tomato = true; + return $this; + } + + public function build(): Builder + { + return new Builder($this); + } +} diff --git a/examples/php/chain_of_responsibility/Account.php b/examples/php/chain_of_responsibility/Account.php new file mode 100644 index 00000000..eefb192f --- /dev/null +++ b/examples/php/chain_of_responsibility/Account.php @@ -0,0 +1,50 @@ +next = $account; + } + + public function pay(float $amountToPay): string + { + if ($this->canPay($amountToPay)) { + return $this->payUsing($amountToPay); + } + + if ($this->next) { + return $this->cantPayUsing() . $this->next->pay($amountToPay); + } + + return 'Cannot pay, no more accounts in the chain'; + } + + private function canPay(float $amount): bool + { + return $this->balance >= $amount; + } + + private function payUsing(float $amountToPay): string + { + $this->balance -= $amountToPay; + + return sprintf('Paid %s using %s', $amountToPay, $this->getClassName()); + } + + private function cantPayUsing(): string + { + return sprintf('Cannot pay using %s. Proceeding ..' . PHP_EOL, $this->getClassName()); + } + + private function getClassName(): string + { + $className = explode('\\', static::class); + return array_pop($className); + } +} diff --git a/examples/php/chain_of_responsibility/Bank.php b/examples/php/chain_of_responsibility/Bank.php new file mode 100644 index 00000000..43103574 --- /dev/null +++ b/examples/php/chain_of_responsibility/Bank.php @@ -0,0 +1,13 @@ +balance = $balance; + } +} diff --git a/examples/php/chain_of_responsibility/Bitcoin.php b/examples/php/chain_of_responsibility/Bitcoin.php new file mode 100644 index 00000000..69959965 --- /dev/null +++ b/examples/php/chain_of_responsibility/Bitcoin.php @@ -0,0 +1,13 @@ +balance = $balance; + } +} diff --git a/examples/php/chain_of_responsibility/ChainOfResponsibility.md b/examples/php/chain_of_responsibility/ChainOfResponsibility.md new file mode 100644 index 00000000..546bd959 --- /dev/null +++ b/examples/php/chain_of_responsibility/ChainOfResponsibility.md @@ -0,0 +1,11 @@ +# 责任链模式 Chain Of Responsibility + +## 概述 +> 通俗解释:它有助于构建一系列对象。请求从一端进入并持续从一个对象到另一个对象,直到找到合适的处理程序。 + +> 维基百科:在面向对象的设计中,责任链模式是一种由命令对象源和一系列处理对象组成的设计模式。每个处理对象都包含定义它可以处理的命令对象类型的逻辑; 其余的传递给链中的下一个处理对象。 + +> 使用场景:略。 + +## 类图 +![](ChainOfResponsibility.png) \ No newline at end of file diff --git a/examples/php/chain_of_responsibility/ChainOfResponsibility.png b/examples/php/chain_of_responsibility/ChainOfResponsibility.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7c52aa094565a5800242dbc374f7cc04e98ceb GIT binary patch literal 53244 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 literal 0 HcmV?d00001 diff --git a/examples/php/chain_of_responsibility/ChainOfResponsibilityTest.php b/examples/php/chain_of_responsibility/ChainOfResponsibilityTest.php new file mode 100644 index 00000000..54b4619e --- /dev/null +++ b/examples/php/chain_of_responsibility/ChainOfResponsibilityTest.php @@ -0,0 +1,58 @@ +$paypal->$bitcoin +// +// First priority bank +// If bank can't pay then paypal +// If paypal can't pay then bit coin + +$bank = new Bank(100); // Bank with balance 100 +$paypal = new Paypal(200); // Paypal with balance 200 +$bitcoin = new Bitcoin(300); // Bitcoin with balance 300 + +$bank->setNext($paypal); +$paypal->setNext($bitcoin); + +// Let's try to pay using the first priority i.e. bank +$bank->pay(259); + +// Output will be +// ============== +// Cannot pay using bank. Proceeding .. +// Cannot pay using paypal. Proceeding ..: +// Paid 259 using Bitcoin! +*/ + +class ChainOfResponsibilityTest extends TestCase +{ + public function test01(): void + { + $bank = new Bank(100); + $paypal = new Paypal(200); + $bitcoin = new Bitcoin(300); + + $bank->setNext($paypal); + $paypal->setNext($bitcoin); + + self::assertEquals("Cannot pay using Bank. Proceeding ..\nCannot pay using Paypal. Proceeding ..\nPaid 259 using Bitcoin", $bank->pay(259)); + } + + public function test02(): void + { + $bank = new Bank(100); + $paypal = new Paypal(200); + $bitcoin = new Bitcoin(100); + + $bank->setNext($paypal); + $paypal->setNext($bitcoin); + + self::assertEquals("Cannot pay using Bank. Proceeding ..\nCannot pay using Paypal. Proceeding ..\nCannot pay, no more accounts in the chain", $bank->pay(259)); + } +} diff --git a/examples/php/chain_of_responsibility/Paypal.php b/examples/php/chain_of_responsibility/Paypal.php new file mode 100644 index 00000000..dd159ece --- /dev/null +++ b/examples/php/chain_of_responsibility/Paypal.php @@ -0,0 +1,13 @@ +balance = $balance; + } +} diff --git a/examples/php/command/Bulb.php b/examples/php/command/Bulb.php new file mode 100644 index 00000000..914aae4a --- /dev/null +++ b/examples/php/command/Bulb.php @@ -0,0 +1,16 @@ + 通俗解释:允许您将操作封装在对象中。这种模式背后的关键思想是提供将客户端与接收器分离的方法。 + +> 维基百科:在面向对象的编程中,命令模式是行为设计模式,在这种模式中对象用于封装执行动作或稍后触发事件所需的所有信息。此信息包括方法名称,拥有该方法的对象以及方法参数的值。 + +> 使用场景:略。 + +## 类图 +![](Command.png) diff --git a/examples/php/command/Command.php b/examples/php/command/Command.php new file mode 100644 index 00000000..3d620bb7 --- /dev/null +++ b/examples/php/command/Command.php @@ -0,0 +1,10 @@ +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 F=^qcBP09cO literal 0 HcmV?d00001 diff --git a/examples/php/command/CommandTest.php b/examples/php/command/CommandTest.php new file mode 100644 index 00000000..14893c67 --- /dev/null +++ b/examples/php/command/CommandTest.php @@ -0,0 +1,31 @@ +submit($turnOn); // Bulb has been lit! +$remote->submit($turnOff); // Darkness! +*/ + +class CommandTest extends TestCase +{ + public function test01(): void + { + $bulb = new Bulb(); + + $turnOn = new TurnOn($bulb); + $turnOff = new TurnOff($bulb); + + $remote = new RemoteControl(); + self::assertEquals('Bulb has been lit!', $remote->submit($turnOn)); + self::assertEquals('Darkness!', $remote->submit($turnOff)); + } +} diff --git a/examples/php/command/RemoteControl.php b/examples/php/command/RemoteControl.php new file mode 100644 index 00000000..0b9b9b03 --- /dev/null +++ b/examples/php/command/RemoteControl.php @@ -0,0 +1,11 @@ +execute(); + } +} diff --git a/examples/php/command/TurnOff.php b/examples/php/command/TurnOff.php new file mode 100644 index 00000000..31ab688a --- /dev/null +++ b/examples/php/command/TurnOff.php @@ -0,0 +1,28 @@ +bulb = $bulb; + } + + public function execute(): string + { + return $this->bulb->turnOff(); + } + + public function undo(): string + { + return $this->bulb->turnOn(); + } + + public function redo(): string + { + return $this->execute(); + } +} diff --git a/examples/php/command/TurnOn.php b/examples/php/command/TurnOn.php new file mode 100644 index 00000000..71c544e5 --- /dev/null +++ b/examples/php/command/TurnOn.php @@ -0,0 +1,28 @@ +bulb = $bulb; + } + + public function execute(): string + { + return $this->bulb->turnOn(); + } + + public function undo(): string + { + return $this->bulb->turnOff(); + } + + public function redo(): string + { + return $this->execute(); + } +} diff --git a/examples/php/composer.json b/examples/php/composer.json new file mode 100644 index 00000000..a9d2ca51 --- /dev/null +++ b/examples/php/composer.json @@ -0,0 +1,16 @@ +{ + "name": "kamranahmedse/design-patterns-for-humans", + "description": "design-patterns-for-humans", + "type": "project", + "autoload": { + "psr-4": { + "design_patterns\\": "." + } + }, + "require": { + }, + "require-dev": { + "phpunit/phpunit": "~9.0", + "roave/security-advisories": "dev-latest" + } +} diff --git a/examples/php/composite/Composite.md b/examples/php/composite/Composite.md new file mode 100644 index 00000000..29f12499 --- /dev/null +++ b/examples/php/composite/Composite.md @@ -0,0 +1,11 @@ +# 组合模式 Composite + +## 概述 +> 通俗解释:组合模式允许客户以统一的方式处理单个对象。 + +> 维基百科:在软件工程中,复合模式是分区设计模式。复合模式描述了一组对象的处理方式与对象的单个实例相同。复合的意图是将对象“组合”成树结构以表示部分整体层次结构。通过实现复合模式,客户可以统一处理单个对象和组合。 + +> 使用场景:略。 + +## 类图 +![](Composite.png) diff --git a/examples/php/composite/Composite.png b/examples/php/composite/Composite.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9cae68181da60c9c0d383c7a6e7a212bf35741 GIT binary patch literal 78099 zcmeFZcTkgS*Dmhf7F0H10AZsPX(C-gIsruxsgV+pu1JwCEwljJf&@@Ns&u7yq?b^n zC>^ACkkBL$I)Tt~Zrm^Ee$V&&&Ai`yGiT1s`Adfop69vmb+2_@*Sgl@cVAVW?EIzk zCr+FoQ@AIqe&WQ*!4oG=m7M(@{6q&5@%+SzzfLH~-qv(AT&yB!z%AnQ^k&68(VbNy zT(NWt!RKH+C8Kyvg>jKC9LCa{% zXx$;5+51sL-UIsu6Eh2~?jkY8BDS^DZWto@TI=ctn>8ZMDQ zNUnqJ&<9`q>%r6&%!xDLV^S9K6Bn%LW$8bifRH>r+&<$sFHk4{1RwLEL{Hqxwg_{`TA2ddcdOzU~ zZXzLQoKI;PxpboBx1ZN$f)Jx)Hi8-*iRSW;-rYNCF^fBQLeKyBzPIITYuG;%H8cWq z#unr*DbX%pJMmHO=W5t_A84Clq+>fuZ6uJ%0Zto%7teW2O;JQ>QAcXMf*DTUw(A@$ zH1CXm;VZMOcUP;VROpk|&lRg~*C}2>e}yZrO%~Xn?v|>vh%lOPeXidP(SY+aW&CxazXCQ zYTyC|FNQnMYq8>bg&{UZw+i~W^I#O&X{%qeOUFV!LUX*Gt2V7QvsZ_-7z`5i<_u}WB;-|OfcdZkI*S#C}mpX}g zMqH;ODb~`)z9>^K@A%0yIIf+ylXB&=knBQ~5Z5q;c3Ot}PBZ;22cysHUZnJpa@YFt zNs|S3x;AV*HAun^+Iv0N+ui$|L1Ki=EAg6Z*7i*5xor7_n#E98$C0ozrpKLU63Mo9 z`yfol4qaAO@r9a`VEE@(y3dtASK|Qs%Tow;YI$Js*8rsG150Ygo-N6JEez~;Pu%BnEl!G|>aU#M(;y_OS%!ch_R$*35$U*BsrxV4f$Bz8w+`jol zteD94>r2?>?to?d;!u)=B}BV?cW9tKRAiUmD8^&khmSf&M0kds1tQ%yl;&%IJivt$ zW-XI{+IAk9r^<8h7i-(*xMr#%@YqK)ma%Scj^%!WDhzb;xMKZ4_h8HSmx@tZDn-_e=eA!Vt;9K%Cnn- z9&jcLEjWm1MWxQ`S<`HzZfoJ0;U{loVWy}Uy(VoJWc5njDs($y9ZNSqCrI`f9Bv)m zuUjV_%lXlCIM5ps`CHY<;92Pfl*f{~6@)4J9h}|0)(*Pm{$wqc>xNNthMfLh_v23< zTT5{U?x~j0Xe*3SL$UgVE%OTyFU%JQR zT-ebIb?K!`ykMUvlBGqi&*tbcm@D_iON}gNU>6zG;0})-Mr^%N&2sQ0d=TsE#|0uf zB%-hQWa1li3xhz=nEx6yBbJseFZio#1ZwC77zM{GQ51ol-(}kKH4HMf!UpuVXoxJi zRfO&N!tshSQBHk3yW9WK5 zp;(dO>LXc6Wtk=Bf1Z!aHDAp;mk%&C75p1-e&pGTkCt=}WHeRQ<<`A=v}__1P+kh7gZZ^h zGSyx_wzOod!{?1U|4bW8 zvKvvdU8`DoAnmv=^s5gHChCrtZ4Jdktr+vdr1K{BmHYaI;;&~Z=Z-pT$(s^dnKXK2 zV72_5dFnQN2I#4rfPgGJOWY#ETg`rYq1L2-J6LUp#j<`LIg+z4U(tGH+j;MT+%BbD4_vVG@^gR1mdzaw`Jgy~tbaR9HXXzk&m_4$u*10%o&|<&<-N;t4eWwj(sm1U;yuv!b6%&kCN`?yZmDAUE zob0ml;HEG{YP((^^|YOA%GcP@D&?pTbu?@B^z)0KXE#e$yz~xdvvYTJj&m8hpX5dy zH|vbAN`-qkfD^$S#0`Srmjq0_wq2UMjhYQmno2iMe&Vop-uiTrpj6=#Cr(Wt-G%_g z7EM21O!otqUY2nYao!oK!T|TZaBXS71@pP-g)fgTKpCpscl%qoq26~)AC5}c>nm#u zi`VR_mxh6ZMD2bx(AQ+~3$#zEW{Bet5B#Eq&2m(XdtT)8i2tiCo}vK;mDrKcFd zhmt4=ZFsSnGi(ac>vX-O{#5zbh2G00B8i>u1jKcG{EjoB+j`*weM>ZQZ=@ zTk^XfGFUq0x_>F&n#vk7(GiQqYIsN#Znx=?TsVJR2kZyQk+Lk+0GyT2L|WSEjd)b{ zo%rzd7^V8+KFPCTKBt6RYHJ(rzl(o6lXK>*&+$PPwI-2bfeb7s)FAhBOUWNH{LHkE zB!WY=2cPa0C8sC1>6Nypr%NRwgeD$%L9R&tL{b0axc7e=WCu{Ls-8H3qC2`}Cl-L! zZyaIuNL3*rb}uI8m%)F2K8EkH7i5eXey*_0SwH8W%W{sHt^a4P;&>VSpz%NdqG>3L zVQ~By;-hgv=6wI#P;M0lO2QQY(KLr}=a@}Mj&Cnru2MYhX?68x;bVhGEM&=1W04nR z5SmA~18}9FMt5ExV`;HR)xF2_#zA+^GE1->J*zAihFwQYiOi*RCrLE26Fa=ZGc!LRgZ|ayTK>W&@Hj-vlM+*04#W5H*6Gbj7zKJp>*L|iGxcs7S zLA|5ZOmXt6iTPe*_SDg3wrN+}!Zxlg`NX_kYExr2qYUY}I>+e$Jd0j@aUty|t+SnMkrbie9)24CNS$-rrJL<5V8U1xce z;|nT8D=uQ6Ah(s^nUp&u^+k;9_@1d($+WpPnCMy<6S5-{vQTrhkr^JbR3edhHnw51 zdpsdVn(mc3@^ec)(q23)d>J<41boY*(cH1wqp0~DgrZG0ACanxTFGT15&$mfTnQ^e zu3#jz6o=|Yk=viai4B>|a2uKgC5D47Ww>}m?D+bS)shz%8AA``f_JuiiTDBUby{z{ zdB_Crz#CmaF`8|uYJV`F=S|4yJy_#EXk8|bc-N>S8ffh4zK*w$v_88Np4LG|uG&Vf z(q6pzN2F%|pp7QjFlvBQXwZ8?EaP9FPA-z7aGg+9RlcU*A?FfYi&# zLDpdZ@fvGb#F|7TYjMo{Hnn|1{mvdk%Q?*n8Ou}`x|EG({h>)q-s%fC2B zD)-ecrxITjYv6vh#75Xk%2NyOhj+W=LIHFCLj3^}w|O&E5=nT$*_bGRxD0C`clId8 zCp;LQ-n&!Sj#;-ez2-=w+1h300+m4E#?95eCfA$`?+f2>=KeOcwARWrZCr1Sm>SoB zU54%4&2tlud>8#8Q+$`tEz`*%fILH(*9ID&XT5{C(xvN_mc8@6D$PzZCL+XP3M+F; zE!;>1uT!bz9ns3z`O(3C?YgMXm)C#pje9D@N8C_+Y?T&WKcz76>0O%XUDan5)`Eq5 zGeMYk{6{V?*-_$0DR18yA$fTD*;4aU`3SIPlsk%da!!GGj7> zK*C?G!Om!*+TNzsW6tgpzlSdB4G}5bo2j05A@bzP?H$b7rP4AsU%fiZ_{4r=w3KS3 z{|&$D1ok@vT@}K7o`97?;Zmv$%=aIgmQ{9;( zw}*{ul-C=!m2&-XAn9CElSM4pvF2-0(}m};xk{}lR;~}uJ36$dMw6+w4e#!ahsK9< zw`2unP1U6wz9BMZ_>OXapGBemJp_x@;q}M>d1lgx(^v*j!f?IS{%sMlD3(%N?cZU(mRUA?%{z6Vi?`O zOw64=7=})}dIY7VFaZfkJh3967dzF`!h65ecP6A>P)484v4PaT6|Pi1{m}|ugyNUl z)#|KQP;8}6ANL_DdvQ%F4LPCVRr(u)12570F zO~16KO0t#dMT-08em;7i} ztCh6d9h`5l-hhhceGf+FIP5lR0tde0N`62eI zCobu+#}>OE%{}G9STa@Jj~pVf4qhd~_F@QM7fXCt$?QRT(;Mn>T{jz=62wO4mwJu$ z6!_+>Xa6QpH}cx@TwD6|A-vHQATE~4b1el*_fpbks>5!IX~(B2!HwB4@fJ&P`O(JB zy~^n(M|}W&29qs$YUmx632{7UXp0U`v?c_2XL*((<`ist6n5voko5>%r}^mRD}LF3 z+x?u_;lquNSQ(UGgZtNr8_jfKS?L5&X=o0V=%-Gg_Do>)a$ry_N+xpN2|@? zd;IfJ^kKuXE&H7lO_A3)Y7c1rvPWgax}!duD|Oba$3AOEl@Sjkls(*eiK^M*8N_@~ z;*L$v8SVLBZ(qN9rIYBm0iK|h)|LbkL^`e}HQt}Zs3q7Vji~QY{~UB7kK-1i#1CcF z%$KLLRg4GgctG=eE$7%)e6^a|I+HLbCZMyX?_@OLy4|Y@Dt+<$(r2?Ar^b82Hh9Le zKPKzvEwM0dsAif!z)gH;dBwum_3^;l*S^-)~ihY8?3k9f<1H$xC2&tVTQC`GGflCfl8x0oX0;VLbE^GsKG2X^?Us}$Kn-c zkURBs;ocP<-|?(2ebnoxL$ztNXrsddg0ZitW{VD1YU+=UJG_^*%OO83T+fw%J9&}t z)&dXZbmI^^9QxyXuHjkWONqJ*tjP^+^`dO)7Be(>G*ohJKt)t@i$n zlBi|rZ0g0H_U-+m<0FM~_Z=0!Gi^!`F^QeFumO6Nd#a%ZP-%f2gjp3G&Qc5lX&6q` zD$WWC4yf;Ca-^LtG|Ec{>9nU{Ok#CyfA%!7oK=c5r84z)XI7wYL*H}vXWv>@L7Hx! z4-w287v|zHud%Oiny$>?d$z?K;4qW=3cHAAOKK)>BK8Sb9(X*DR%SO!)Msp3R@7w_ z)y(kLUGOWjydv!vI1brg2x%H%_Z!^6 zLPbNiIO%R^kGmkjSNXQRTT`h|0LnGueV~U#Kz+whF)@(oEei0Pc_9(W^5V4=w=Dw> zUhX-sueJlifrft-DU&=W$(0@nSdD_+iY{ND&f4tnvhv0b72)g8OvJh;sp2N;7`L_2k*LwA=htgead}v z)8Wmej+wkXz7a`L>9q;FvfY&Aj(dx&!HyH$S*mN^KadWvxC`U+e=>;j^5p{HXDdEe zwNOWAH-cMY?S)!^@0sj`26@O)_<)+8%*H*Z=9p$P=*7aIG+tfjNgAs0KvD{Aa{ha7 z&Mh?yRB1|+_jXX6RGJY7V{ah8T%lxLjx~H^I0)5vn&YNXRiWAGKjtMw?FC=^Ow)!N zR@*NFhI+}P!0drq^Ivwqh3toUYIT0e;E{C4>2T@EYr<0f<@P3S@gnJ( zCa+tLp^&V8JdaFCb2=$d~aBz z-wNy?&iPzdAhoRW;#Yq668U?Gbpkz4p8E2Q@Gvcg{L4sLh>{jb!K9OUqJZcP?li0U z&s&f9ocg5YM~QpwQSl$PJlxiqkJ=JS)GWE`aT?!sdcFqUL>a#c3uzgCMTL9hP?VxF z7OkS({?Q65_Vijq5miA>0S9w_a)GU@rPMV2hoEa@ISkLf?U6ZuxL3!)DRgJwqshJV zAhU_$j%s$fKcVr@qo_@!u@8T~u?XafP`FBIV646c_U{IE>2wbCrS&6K7m9WsDDk`D zP8r<78i(BFXYL}xzBW=G{Q&?SUS6OyaG;v`?T@DS6v&?K?j&jz2`!fH*7l)Ejb7`gtoSE+=M@5Y$Dn|Y`>w09tgNu zB7fy&a2(aqGbU2mkCfCmGCo6Aa$e)>98Iu`Fqx)a?Bp-dqm=onN#1L4bO`7p(JQWR z?1@7rb7o|hBd5H+ZF+++z0tZ5lwb&O>Zb;4aM}?3GRMvS135`{Ui8*z*p77;VmsZ? zb1qd~s)Iw6DnuPu#}NK1y!L3RVWT}cBuJisX?(X zjiaZ>#;7IO^pP|5DS;M_{i+}S8qcc4`qSIv+v z?l5XQ%K?`UGOAi142=jhM9<*cK5b{K+YI3fuu1X5KnQdAOHip39+Ug*hQ}!xgu~I2 zu5x00NVsH^MEEh3hnVM1YU=9Cwa>k6PfO=ghJeJf0eu)3AE3SX<#Ou0W+b$?y!IS= zMp$`$Bu;wBxi+^C!Vt--&YM(i%sg#=+~Y<1Zx7+Sw%9QOVbBBL*G!PkHeP+V&Cnv9 zvz3<144ipl?y2TaYzazz`31SnOO#Rsxs=8ccc&$({i#M440u%Ra}&&LNP5ZGCuOAZ z+MC@3rK!(z6K2!YgJfriqK;QA2xV?cd(GF2pM~%3Z@3)fM*vb;d2yL43Z^-HZ5jothmI(0m=fwqwo)4g5>3j&q7v> zPGyXQ0?h_@Fp~>I;D$Fx#=J+OoFC>^h|RbV_e2s7QhL31=F@73yA%4HIi7ihkppC)A%YyJkGu?3IR>-^IpJ%d646Eu6d~|ru=WIoKl5y#D73ff^gJ|D zSJDgG2!Cx@m4mFn?a9FtjdQo{fz)O3bgsF^L-?jUZmBBGD5#Uqtwozdfk|wZ>$j3T#L0^B3{LW&oyjKFYeR+H}B_Yp1HL5{aLaPbJ|ngCRCOddt&`)EP47rtftZ zI>6zN6jIU@Ri7_n2irVhZtvQ7q(b=ymORb0A^%tgX=jYgJxD2GBNVn6vT%_sGm=sE z@DcBx(yY{&FHqh3n!NKZitex$-t6jeT^%Yt6bpnwq{g2?V54F4__5lNPrxNm5Z9*) z6f||1V5`x=wQ*|^tyNacfiGO?JP>kKI;3x2KJ4f%>WgsaiDkCPl|fli#aWqkAr6I- z0B480;0@NC&QWce%mF6_j!On%b{xB`81oT+AL`Yb-7F)Oi2j_LB}RO?2e_rN%#{JO zOHgDl)DrvEXSIe9hfN_ljE{F2HV%>X=&cPEZQ_FwLV)FLzCR}>agoZALbH6^XnnpA zp!hzO(UiG~i_~b{sCOY!&Q>}zvoB~f_c!WT4X)jwJ!$a-ci(2({R*>K`}iG4k_}7d zfn{iTmJdMEU8Zn#!;vR0e(TH_2w9e_F_&fgO< ztTlZGxG%k~OEo$*m!59uegSB&{!!edzompnmHT9}ZBu{KNO4I;%~8{2)%A?sskjc6 zfLWy9tAv&Tv>PB$|5Yv(oDB_JPT-6Xr)++Lk*1=I3P8lY?^8r*d6Yc5r3Z?CqS(jY#L2gr~;hfqpNy9fbdaczU;Xwz3 zZUZ|AY_`4LuY+EkPaMV=~s>6|XT-Ljg)JZI24FUCHLFQ#W)!eOh> zMcfPQWcQe@MVi$^<>3h+$W-%9?G@JS4e~vGs)BsdcuQPzS6{y`0%V2707bAtK3CC zZ$c8C^Mtl>(6UhjTox{Or!z=-;YK^h6?UC+A6h=61RZ3_#vU59T(Z(5Vj%X!dM*fU zJ^poYoDtjAxHy+jJlWY+S}%HqVB~QJQc~zYxA3R1m#5>WX&BUZ?;B2e=6JsQ4jR^h5tvM(!`EshtJDxCDF@~GI9^OoDbvVQHc%V&1tf)-&hoXTP29+c z=QeOZFmSH-^K4$$7oMi4{9CzXrLBLSq z&kw!HiOXdBsMXM#ITqQg*`E_tI@a9}gsdcU*A~V~Y?FN-d+GPFtefqN3itGpc$Is* znlN!gou_H3i%N($1kjp_hsfSJ8F6DFeYm+?sI~69thjYD3m;vALGPR+sKlNxCOUd^ zW*){wJ{o@aHVd^|TPSjq&VBywFZc_9g^-fa7csQZ_7wktxoue&;lr&;1bs^w?>R;x??tyXM+YpHb6yLxPSKC#TLn3Q$b zTAE~SoG#?LIl!ZxM*=)szTKHSKpqfi0^Poy;`cu&cF9SNL zSG>A$O=gesetu78)V@?lu$YAChvC-vk>X!B)~G?FyI{AYT;$y`p29aVhlcB2mqHiO z$MRIKY*T>NnU615*rc1GJ->f;^l2?7ab(&urhwVVpHtn#)JsmJr;DG$U$2;8J(NCn zS3uZN`o_!{DeI=vt&_F#jLY8D;xoE`cYhrXe&MnAcrM}s*08G#fERMgScSlq#GK$6G~D2RQr!V zPPJEO5!XN`y7S3qBWz*dseg`Yhjg|yVzzha;4jm*Lkeo}H;u-wo_qz=?#1uL63@=c z>8sA;LMsXeYuo`-fOB6oekZGbJY$uj1Kv zHY30cJi;m)y|GWI*S6*CYi%Jb-Czl!52qS3#`fp6MCP~5sfFNS4%%TV=bw$;f zbcq=}f~@d}PgbWpwYP<~RLoX)Spo2hpq05t&qDr@259H(!0FixYn9T_yx~@6UtR57 zo^QayG!5fy+uGMRYx-VJWyWVv6BE&{*CTSdiiV9e=EB;eqeR?#RZbECT0D~a6WOdS z@5-eoZ0{!C1AGIUy`z6A_Ci7P(Y+Vg$N{&9m+(INBM|jAb9eQ@O7GMkVhK)pxTrdib=7+X&vn}?Q!3-CVDsCdx zYL-x=HO`Q~dyw%NpqQ#hn9@(R!DfV<$>Y@8YU=wkNk{K$gX(%v_0S?WhWI$x$RQ*T zfYJUN&9y#IYbu}NX310RDjte ztY~rEQ3G3;Gd!8(z8M#zNDxiBB2t)i*!B?@D`oP8>wYFMTOCD6 zfH%ZWLQJ$*BuQ!{lR+vo(kb#b21A9bl{N|K7FZ8x1)c99cs#XsFHnce2rH!dS-^y- zIzg_aKHV9T8)gKOBd3GR_R9T{ykOhD+P*s&IV^qPaiHO<`gv1^5Re->> z5YHUGZ?OOtd}uZScu2atJ9jutvmaZxSa~w@<8rqUT1i%|$3W^lWSK5L#K3a}gU-?A zWQTHZO;Or6uk=iwk8l} z4DYgRRS9F##P&3A&f)~XCc)H)h_>Q_4e&+dat48$LwpQ+tzY7%kc*eej;y?$E+TMD zxj^Jbd0AyD&;d_C?7L__ z+>AbG#m6sVx6&QeEK!x!>R-1G2o)9;IA+n@eL;?9M^a z;!cnD?7Y(4=Wm+;SAto?cvvH9K|i*-uS-I}9oNylzWn>`QbD^r{=ciXLGQmI`C=Xe zO8|!?+ZLm^``lQY8#D>iYJ017j zOGY(YMIKKakO;LR_3%NO^nwqE4ROlVTPrOemb;51O5(@6vMdA9v7f^Ja5)qBy8MDG zyN|;e$rueY9^!xopK<10;XL(4*$q#EG~Y#OmiQ>WZNL#S+MAarN55^q@qmpPxZ_pa z5%EJ0{9GSyTH;~?Nh5W|-8avLannI53|luq1F{fJA1GcrRv(IwPj9-S#9tjLY_K1R z(=9l8oP(GkHD5i2l2HLq7j(V}hQG;N0fC`5xDoJ;{$igJ1gC7Vt(!S{v`U;RJnqr@yK=&@Sf)afEkSunVDG?B9CDXW+@h zYeuaSJ>{JAfnBIF$ECqGNjvi`h1p|X%q(SurB7w~fcRAs}c_U{5^xw<~4ejil zm54dNG0?YfJgrSyzO`Z1Cvc&t4Nz#g^M5mFeMQNjnT&x6)SDsJMnG0kuiz|-O zQ0jtPSy_;L6N7)zXG`)|VI%V9DA(|`7T`R{RXChK7!n(JVypLEs|AWVBrFY$A84W!v%l_`k2PB!b{}g=!`*J z-rD!#u%;{VOZL@rqr|OZLm9?Me7G8@mc|x z5`>}eA#m@vU&{y?e6dSwe^CwI^>v-K$6a~-+&u-rOw-5PFoi&8;sv%Ox#B-8BJ2+i zZDooLpFe_pBjm4OKF4sKlzSn%?+TXB&fcwkL|P9zHiZl*13SVOGNlgIggsm+X<(^? zzoz#w_7Si#?d$gJVFbj+fw9Z%kv0)~@i}snPArS69Ts<4)7yPEZsc}@->*flX@+zk zrjjo=+PUVltKJ=0x|!}v+73*E*JC&#v^Oe%P}VfaD$j)x2VRR7T&nG9r$?X_8}G=& zw1Ma=e8Jo<@WU*#=+43@04mU!TY>n#ClYaE33qNo`9*&-uXr;4L#5e^0pR4SW)VM3 z2II(`?D53yDn=~>2?F(Ma5MCN;w!k_ML29{N2g8AAj*j%XZIGz(62Ew!oLA}1iRiJ zI^$n9Ebb-xSEP==<+iNOYd~(p+@?2hjfja&%3@R_9lvFlm6g8E*=vL>ThT{+vJ7Uq zazFH}L6oe1H{!tfitA>`p~*pXv##(uD$ua{t5=|)iSUoR3kPP18|-6oc+X`EARr%D zV(L^?z&cZwFP%R{E7D7pdZgx&J{EX-V1JywTRT(DpB7;YyfiCI>?vPnm{> zY}2@^*8{=d?%XY7)Nd3|)=|{NO^@C|bMdV`V!deJyuFwxe(qV{CSA?VWfl(sXDhM6 zS<`pIQZ;$^f|S_jaR!8*u@4j5N!};r0~2nvZdTlgp|&5w0l13o=@W5px1Cb3GEcCK z)p%h2Yq11ccQS7J8yMa=lP_PAM8l--MR<`8cSnqmH%z}U?PKXzw7sNSv=HH!L5Fp| zuDvYTL7w~YU2MD?=nxhcEmtb8kyp6!!q zAw4@zQ8Lk(F-6?<|6b$9Mwuq17n+gy{9jBHXZ96k)KHa);SCp;)D|Yc7$S$vqIM?7J}l$oJ*uXR_lB@ zJ+`#=#=|AypiA;DFA(G<+;OT`WFWLgmHSVeS2j}{-@Wb0QVmPT{Vj5A5f9;tAZVkt zZtwhd|03_9RBkiJpP8cl`|Zz6;a2kHSE7L3Ld@qgCYw&oZE{)m%jxB{SsI2GPSHQRsgnY%Z$c&b zYsz>yd3$n;W17iFiq$yo)_%kkpHtZ6A9iXYd9lQnl758|l> zlqq`Y;-eD%o9o}KZ|1bV!Tp#cc~o69C(!H*du%l~a(Sf7dsBkr1(nE*K6D$i+n`xP zbiak-I3ms}UX5hP;0I!XNWFplN(|NbG1$*~KA;1NV!Nrjiy=ky|RR5^BsI z{c9-a1~Xgt5pVmaPBJ6~>C2Tyn3>JHfu4FpUf&WJ1!sT5ApxCv8GP>;TX{oZ3av{} zk(9p$4(*BZ4C?rAqpAS1)AZ4tjsz2n&8(x2twx!dBZq@IYn!ahFJB%<)`46ls1Elh zUjM5b4|1hnfRP|^vYvyJR}dVu((l0rDLwX+-F*^4?S}-ayIvqVIQ}h%;IF*AAbqqXpVLsZjOiENfT><3 zlWQJ(6j9M%sIYhKEN3f9=YSua+>zp<%?bVwUkeeBC#vt@j2CzyjP{s!cwH;AJ+cKiU`|O%xW8hTW;5 z1@g^bcrB?1fVhL&U3h&@7~nu7a67oA8eE(Bb?vd(HMI9Z42-C5DZRhZ zGeO+9%MI%vVc`QTEnh=zWKigOiMSYgABpf%LmE3M$=g{CoF*(DfqM?Ya*8{3d95a zFae_@E>KDxWgTEK(BR;ENo^kklO{Cql^b@wKjP%F+@GI>6Xt>QG?OCS%HY0}qxEcc z+A1J^()skd}gu-Uq-P*7;;h+FN6!7dxLjCEu`5AE^j> zD1awJdD%g;ws@lA$y=0i)|r{&Hwc@irq4lGmPi(`pKQqEDEZHO;a#C2%TUjrKIwkM z0R}iMtZHt`>4$k5FFoU8`ZK{s$`h~Lxe~`g*!*j1_kd$481aQ6}z_Z~4N) z;7on>xf~bApRt`Yk<#y6hT1{HOe#nz#bdBa7MK|; zfPj#D(CYB$;~JKOv)rDT0d;+BZR1f%UEFMiPDK&3ar zK!GJ#wt?0MP+{2>TGu+v#Ky;|&c++U+_uvr4>t5GjkO^%b;nMcHK&{tT;)#JcAQMW@oqLKKl^JljpP7HB-DHHCr1CKoJZ1kWrrH z!pMCNzj#aOXd|yfNAie%v5oxPQDyQ2#e}H>R-;_|3_zg z=6#OUgiDegWej7snJG|!>ICooIk3TxLCCsg1u}~0;s1as5Ww_x=h-y0Z~w?MQ6^w# zxA%LVRR@%r^Zu~cB?1@U7l&FYtap;l)wDUs=*(eRlR zK6&Wp?{dk*t?mbG124Z5*=vPfoQ;BRiA%Ka@NaK5VTAmix#LS+4A)W!=b|`8=3zEp zey<$LDF^EB^vR>8{V{JrkO6Okv4&98ASWdtM!Vy&U<3|s8&D=X0|vWfzA#PzN4yxu zv~MYPS;L$}lJ_we<{*fhl>^52XGFYrnsDaY$_zz2NWZl}8H1Ba_E^-JPp&fkUR!Ln z$o0>F`$s$a&t%|AOA*p&reG3F-RPoO1!GV+`+i_V3CB8DRyA4= zb%|U$t7^RZ`aK@8N+^wYI3%+EQ)|<%BiKDE1-EvzDII*ndKb7P5skr|x#^xBYcc;k zVj2yk6q@f?mhy3AN$wdCP{EL}jk-Z7Z65H+v89=dlpr!g-jh~S*+VTFSW#fGZvU}} z`>V9Y+N{7be!n)}^HohQ`qvJrL-o4J<~|;zEmJ8n9q+b_8z+6o#|*|JV|RdP#Pc>o z?>CR9&70qLT^5~NocEZt0dI?nXZAC*wL*ygdBPa{~+BrbZjFJWspJJ_RTrE}V&+Xq; zUe)#>VZ&B^$XbZq2n6kbOwZu&Zu}sum^tB9mUI0rkzfokR9%o#qZ))Umwokfj_Lv5M%8$R#=z^!IXzv`LuvhktP%ZS$~2~$TbXiU;pFbJ`oQZX z3hYr?I56>fhQka@`wX7UOg1yy3N$ou-O$ZD^XFN1%v51OeBj&}4$a5;CWVz?1`|}8 zg{~z~c*Z4wcdV~x3LH-G+1w@=m_1T(1YEt{cZ59ILo zi!1GyEqt66;r@zQU(A`(%~*R#5hrC(2}cPDpv{Fr(A~kGRhxe37A{b?7JUXS%=ZLW zF6ZlTp8W3qUsG3EN7^}g$k+dP;iZ1_xnL0kN`Q(waT`G>a(&)jc?zvE1UJ3EtYUaO>&q zcY@G6jPe{WWsfaBz<>I0#A$&8l%d&OtBsr?zj6}9AdrC*r34ltbTkQ-w%T_fez%^Uq zb`)tqIcwwtwmjd380Uso!L7NG_Or|;Kkel<+`y~6R_J$R-a?5ozibdcLOWLujm!&2 zEBqWqC37$PC_YG8RL?T!AGhrOFZyB(_3B>HqM+QxP~XdQ3wn{4N7#S7k1C^Jgi5A~ z{FqCq1-SmrcVW>I^|F`l38ML#UoIXu_<(=FC`Zi9YRmoY7yQ|m7YZDIq29J5i0whv zV2WTMC;`_*A)6HF+a>nfDxCGRINBS(e>jdC#DQfL_%@lU_dbA@0S|D^{sCS{#!dQc zEjkGpj_XDvmOAH4(Y;vU2MvS};GV3hJ(%VFUXQ zC$O^0)VY)o8Bq)4@dKF^7hH=uCdb0-flNqkScV*1Dqv8*uYUk)bb&9pQUg#<$($@N zjfOt8eOi~x{<3o7mp|ND5>(9(i3BR9vD{lhL1;h~>qgWLmW0)l20TPjlS>0eB< zwK_xsF!nU`ScQ{jF*I;)W5v{*RWIe(AE+7L2PVSB;o^l-G_gc*;gi0zW6SaZ!A@#l z>3?ze-f>NJ-MVPNE(#(lDoqH8bP=RT6Qx%H1?egRBHhrtq7s!Ny@S#_O7BRM8bS>M z0i=eS&>^(knfSi1?r(ql{O&oo>~k-F0m)ix&N0Uv;~CEwbF54d;i!8Pwra~Y^=yH! zdS=_CCTndn@a;#_oIcMI2Aq$apb6E#<)&ZB+hVTX4r-o&QvwbToCO6%YT0ypngTGC z;E%|@9u(A*4Ri$HdTb3&hKFZNF}es_8ob*^9OIiJjDm`kc87{n~k zF~)@P65D&JA&V?eFynp~F#Hc9A2wO@4GD|$rU4;<4Jcfxndr%1k3Ry#m`iiro_xeSvQuey|`bHK_Yg(`Ml8ol%{?cN3^9{+}-hzLj}+ zWwciqG)4ffX0(h@9-*PtC_BhL!`K~Ob zc;OD{DzM|R)ES!0WBojGhu84KdRa%tP))b9uT>N<6~!lz#iyC4_Ww{kug|;B6{u;) zQH9^kIq4pZgPse?U*>4*L^=Pi%bsbwbLC9jjo@hg3?-mi#GIVIiQ40@oZ=(^n2nkF4Mhj zlI5H|9zE!+DEWb``OVptjijrIpt8p~RE&i>XrkN0`kwzZ* zNkY`caCv(J;7y1Bsj>r{!^d{ooy3?YA6&MlDaPJyw-&R2n6}NDnpUEkl%^xzHe@ih zUsgkJ2>C(o80x*t<9E9^+Hc!&mXBf^_zuqfD1ys77;H%y$0K{YY3p`F3f3qyB=T=n znAKgl)3Wc!Jh2oW)C(MP{6MP^lSqbBIOKQ|#5v-J~-sAS?z) zD1AZw-4WFLGPgVj(7~(!H2Wr7ZS2*W)=Ul!`bfQ+dqFsMzXhFAx<~jscb@!ns`SsC znU|5h)GncLYo^=Ya4SB2%E@D~@#`YD+G1Qnih9pnoI&e*Zr!Au`WoCWPE2XMuaL>2w>J#)YHXATBjV++|$Go9Mo?RkW`L! z&3?|=@2TEQYk!qYToV=l=DAg!MSgN@EGU2UY*pM?su&Ynx~YioejOc3rPHdhbdz#c zQiKiKj#g7he%438^<#A ziakMSixs%>=o$(=u@Ox4@kxceeAh6ZxO2H?Bm^2 zqx>N*CfdYCH>M9tBOGrL*op8Z|9p8Rr|J&ID;g_@EXxmyZlt}^Pej_+R6a_>sE zX*^WuZTMvD=X$ZWw(Y15uVZYyaSrYptA1xot1$bOKZR9GP5VLl`8usxHiIs5{yDn%3xw{E26^}ELlca&aCfIg82?D?$y_PUV+)x;tWpPy)c7H zI#|umUrQKnTBuW;Tz%6%;FwUm@zRJjcWt(DW7@LRYE;tE3!_E1((`kiKfpTsYJi-_ zbB~C8uF{Ofo_H#DU-wz}O-kib>&{@Nv^~uD`o`9}(0~*6I_Ap6-aiW~kS&Mqwkn2N z+AyEYrqg%8U9-+E7d*2#q?|SXzCC+C@u!Hfl5?#7Lp|-@j}hnHj5iG8`WHC4vtyz> zQoQdCjP5!N&Ie#qqs#H^`J=tcO{WEHqhG@*Qj&;Gg`t$!RUHDhU551vhbhxlgi5dL z!#=dFrygp06{4Uc)fiX*#Pirad&{v;?!jxB^>db6k-4K!^FF{SKL2rj*$>V8{M|Km zR+S@dhojB%7Mh3BgtqoA8p z^ce`9I4rr#E1jL4P7ugL1y+k{JjKThu!$j!TpXs#AxaT0;Ja7U!1o|O2 zu5mPAfRKrhumU!o$y64xCh*6(%iy4AS<3jMV4KE44$v(+opcwbPOP2NdvH5GFfYi8 zU!hoBJn}v@bH!`kAdNc*;(REtRewL(>@sUPGCi(Z@wEy<+TZKam zd8WkSEZ!v!XQAWyUl06BMSP$NO%v9RhdB2q^u)PGU48%e14W1r{Hokn*-*TA4hYVa zD6S`w8Gk>po%FzKF!Wy!=pfBExx@ai2k?`m<6po!S=^$HYYWxZKe$O-zF|WPfjl`x ze3naU61)6md;CBp=o&sjM*0^?gn3|5!9tOi2dEeL=Kt!y!HvH_z&yc^&k^GNzz_Fr zq9F1;wh&U9d|8o3UfsW+zda?}@A4(Xv?|3)Kf;+BoB=*Wl!ARL-CTaLf8_h({Uf8M z5Xc!S(%jj~mpFRf2s6d6rsC`zPC{<)f$a}D<5!h2PjyZSYUKS%;lPsze;#)jXqzi( zI#iwp@7E{T;-gn(HCxZ(PW|(NKdrIH*D5jn9UOWyY!USopX8=K+Me&#EJg+7MMso^ z2(;2Q3vY9gb1xZJ&AnghFuqPyLXskhub6Fa=>Dbjn;2NS#Zlmv2yJrpa;yS%nWN{lOvKa5LNrF%Ssb%?d}W{PpcbG z@dV;kzlCZt8(XYEb?6@RumvL*hhAi`=E}?#taeMUhpPwW&Q1pLkpSZ~d%4cvgWzuU zKwNTNY06Z7C?f>3IJ*XI*;|}pwTR?$d$BIzCLUppxDj}F&laNn1#6gH@RwcVF0-jO7+P1)F&Z8RQC0lV} z&M?KdJ6EOm**gJDYNRn}lML{+%J!kN3iEX>yKsBn&g&n~A-;x|b5d#w^tj#M5e{<~BF|#?$0b zBL`4ABO}-S=^h^4iq~P*h>2}I2!v3Egk2kq$}B8;{N-A?)w?9RV^Jr7WsQt03CoNh zYiQCk1#3I=4d|-&#*9*iP(Zj{)JdOXKzI1~s`oSx+WK^i(jP$}9mn|87#1Tn2ocWo zSH_8(4dNqf`cnN31WpG;m8QU}uURDNTbT$pi{K?k+ncA(du<`uowLXl9uhzA?Chge zP~`ROtpxfz6JB3D7gD;K?@V@k0_gvz^_!Yg#yD~aB+51oi+4+rc?!%=fC%fYR#Rp0 znTQw-b1b?FTdoAZJ9;4SP8UulRXw%2%EAMHqPr1-SSkDSheC!HyHdSWZ_8MInJp%Uq z$Ev+~XRsxBB@8+|am>M=!R2XAwl#tiW6C>u&cGIMUoYOTJFLe1lG&d4q1oJcCTMKG z)}~Cl{@c0S_K%0vvJYy&%<6&Bc=us_OpBIR++fiVm=TJgqMv8$djj3T(@%k?mw8}< zjN0^K!bakzNS`AuU+TOUddeF4V&kEL0g&52#s~cJh-mJJKNMZ?yAuVh3&o2wPk&j$ z3rAjDJPVAmg2DR!(lkku56`tcRICJ#GqT`A;ye`$M1-gz-*~64vjU&;vCOVS^1o@={{!j$rx^tn%T>`q zAg^53?7uEcQbBxVnqq@Kyg|rS6&AuoA-A7E6=xC6O|R&WLLS=O^s^S4SZxE_?}Y#B z$L{Wx!c4RjFD^oE>mnW#7uxb#_7NZO&3oFgC}1nUU2c0$cEyhj64pW+C2O(G`c}-C*Vl~6l555-r8lm9s466TM0QV` z0wP*<{9_S>Kd>OCL2%-of}XVgK>>xVC06#{)fPcq4CHz~Nf<`=6!d(`NCH}EWD%{t zlE0Cnd#auz)bu<~JHatTpnw8}%NKVL_I5PZd|u(q|80*X6_=M+EXXE~lO#n0??YGA zhYKSvpV8Ho)n2!;6atAj)0;U7k3HqxEaLs$)4v}z-OVf6UncZka13;zJ=DQO5 zh|{QoQbgoWPYvnblWo;$HyJpGp&&#@Joy62Z!m#xbE)e4KLpvh)Yk(g13**Ou(*2Jvh8=`_nv#{3c7cNhL|=D))dWpU4HpKSEh3Nus@G z0VimPWmammvtzq=0Q@UHMOzIYBm8i{NIeJ?SKvGC$$KC1PW@?nnyw>PwU&8E zScI;mUE$m&;WJal#y-L5=FauvPe~4#OVw}C(drKp${G2FJ^6FXDt20q<>Clb)p_C# z@9XqiFAZYxjApyN8H|K`QU=d$g7;Vw#F2gk_5C+eNQ;q0L$V9Brp1tt4QsM@*sSYf zByK%;{@r`Za5L)tXXkbL=tV=J*yhzUve1OyqMFSq^@!0O%S`g5UlTAo<1DF6;K{#} zq$%}eExtBa#6kFlyTtH-tYq`?U+Xvd^np_}HQxm%G=4{zP=5cF@j*CYu0PH?8iDaW zGC7ewsQ+}T7~N(0u0R@RA|B8({n-j>T3zHY;EF4_{i)2|fbV9w?C7AhX2Dvl&3?G3 z_YlU_&FExgAXUwqwAsMJc%dHAMdFp~cj z$vz=P#wqppzT56ma8TKv+lc1US)6eUud!jOphq}Z%1r%F5az!_y z857-dmIKNTSE!&S3o67Pn``LV2e{`F_jR;1uIAC5=U$nx^7S1GLR;}sZcdVk#(a=b z9_lf~tS42h5qc!@GB0}y?mw*TEN@PB=N3MoTPdo4kJ=(sCU7I06^Eue=*@-8RhAdK z6N8cF2O?}@#zE|V4lj6;bLy%UT5>Fq#)bN)oKwnt6XnE9tCf)!75l=97MHNH znXajw!EeSduSEDssUx`T`IMAYBUM$Uum!nT+3tNoa%_+!)yM{Sn~gy-t?Gm0ou><4 zlY9oAr8`6@IY}|7)N?uLtTR?N#H5p#DtgA~+=xl}$`~Azi_SC`8rk7emuweskbD_t zftBq<-qY;vO=f3H7c?SJR2SLJdx=d`4<=hkF;PjXc&Kh_{QcyVJ^gPw|l)C^doM8a^1Y*72*Etf}> zLDN5Lshu|mBXPCkhF6CNy-nQ21QOq^37jfts;D9itqYkmRxoTVuq2us{>w1edp^oS zPIy;8N-w`w@L}_%#q{S&H*xPJBjS+LODz@^?6BKi9$U2vHfH^~Dr(5p4p&aE%l5AI z%!%dS@#_KxP+l7JWK6+z)2s7|Z)w(biC!3uL-keBK5Te>X9M%V`o32xV;p8oRI!lLSF=nnOq%S`_cjz=O;~S~j9t~e zIk9@Ss(lJiH8!B!aC3s$`|^03N}tqe_E~}KyJ!~HLN{IQhUeW?ZV+zDzx4jF%8>v2 z)Lt$%hWHzvVTPJ7l-8;V%0ca~qb+3!4=Kmb_Dm^4Yw#bPqXj2osor?xv`97BS<3EL zv|uhulhA^BoE>dH=d26HvUW#IleuQKz4kzUZb2XxNt@>-T#Su6$-Ud7W3&z2q1QoM zDWdrOg`Y`!UTt>|Bc9Q$-f|L6w{o)r`pwK|Jj)zGw{kp2DxgK03Z+5BcVPL=dTy;~ zZkG)rZ1mFQJ0>;BVeZ_jWv>Ol_QU17JPfB`{+~#=LO|{Hu!@4>_E7$QA?D7?FyGAE z$|6+NnAt?;^k=udhWY^C@eWFuMS4nDQ5>qX;9#NH{Ge>EbF8BG3oxi!6bY-GX8rKU zrSe6?3&-y>;a?ivstwq-^1gi7(?6Mn18NjHQXETkoj29j74VY_kNrj^`2CuDUMnlm zaDi|Bu{9QHus@rUevZb_hU$1s3Li8{;otBPLixPrB8|3DQv1H^xX9B{0>v8iB^O=v zibREPEFUhVv1YdI5YoS48S#L=YSMr~d`e@)W>0Y9O{`yf!`3X=KjbgpwiDcT@JLIj zsq2JT*PHAgOe75ue?l4}N<0jJamIrTRu zpt$np^hn9hJ-dGybf|Wh*-=l2wzMk!E$OM%d%`QtZWiMm6n8|;WBjV9?l{~J^3EvL zWjN^UxGWXmqSk&@A{_v$)R_zAw5Iok#8e4Yf)g49!Q(p@R^v*XP(rmsE@QsvN~XJk))zDN!G!iF*p3Bj z}`s)oj1KVd1K!JgUXivWqKURWV@`cxz@h!A}1S4lW)D&2bbUK zJ$`1LKj@deWU~)JeV($X((_z|Vs3FJSd!lY<9=N*Lc4L{j*(-V>cPCEMB#WFVWyn2 z)MLTGfXf?Uv&Dij|FJsit=!rM<2yUgx5ri8CwkS0<_|+e^J;4SRegA2&Bt7QkW?XJ z?D}v&fCW{Z4|*N6jdsUIKD-8xb6H=up? z94|$sB0kod1ts*ZE@PPa@R*NAdKk$I{2ZdDZUADz-r2W4MU?gE$xIEO&RB4Nwf=g5JJa2zXsHVe;Eh!tORx2MmueOH zGB@(T-a0kvGy^u6bazBU(@1kxkmpp+umi>xp`TWaCgi(ivL=h)8yw|Itv2VP9JN;p zzP4ZC&NG)z$4js*%?)yP-FAPDQRNq>MvM?9X_9ocq1TORI*ElcEk0`Z&+>hxjUz!mGQo>oGa z%i7q0@!nceuF2W52PU|M2Q%5!LD+QZu4a*6(c>#Hfn!_8e61g2dFQS-H=kV{*bu9% zkkDqrf0Gapm1r+-_?pRm!8}f8JezzCLhH0 z)p1juO$Pd=?S`7bu7t(i!JP!|`l;GTxs;=gfmHEMLt^AoWsLScZ2Vr7e_O=-3RCps z>h&4p3ps<6qDI%RW8}nH)vX)3j@ni>-|TF?{U+WI7^m(%!MIOUTaWpF$dYzHdGHm* zZ2Lg96}p=+7w!PT;+xG<3Ag&}X6$`tmaelcO*h||gx66WXw-yD7oItc7E_`eQRU0d zmk{uLn{D(Ji%xvAr|>vtu$FgKRE|Vvh*K+aJ^Nsn%9E=C$9C)=Vc}p?9W&$3{j%EH z?M1Dqq^Qc3*O{ds{a}naI3_M)F8=GszW9Bb_%F=1ZsPJu+ZMO2l1P?ZTJd8_K#Z(s zPLaQV!O?DU$;JTuJ5vw{I!%JsE)PJIB!GEq%5O~DK|u;z*m*g0&+CR8maEFI4f9=a zL|>Suz-u2(E{i-|rU-D@W^=pup{fsLjK3TO^%aZB>+C)6vnfziWeD6XB1bo(s0{P=P8@00 z7r&{x=~f5YBlmy)9F+V2I$hKr;35pUO%4R^V*~iBvy8taNFua;|A$9-;$@hiOylbZ zM3ubGl0*tb;BeG^BE0a2XArT22usqf|yEGiJzE#bCW4Yol9;*Wnhx2EU_&6CEF#O4U>ik^Qq0)r_=-sgopHx0t z%v6AHr2g@ZOloAS>R^9iqyMg5+f&^pG$qRu{|pj^N3EfY7%#JEY;OytT5=yz!MC(= z79^G5lxci;@Av3ey5Y+3AjajlmFlLl&mk<|(@189nmW9nKG0WAoL!jhz2|isQ%6ZU z*~W|ae_v?d1(%m(w0}y-R${JW*V%Xckk6Kz_A3J4Eif!d(FL+aJtmzs)u5mN^Hxg@qiv^OcB z{T9l4sox2URwujd&-X7wQxTq!ZE7_Obl>aY^N>FI&2Ag*ESBxA5_jsp!bEyn%7QJ) z2q2>QpV&yBI0E6XAt{wOE~Ei&pAHm_e*~Uy<=uYDJ}Be>DMg4AWz-z}gugZ(ciijf zJY%peyIEids_pGefP_2B39F#io?)#A+A#innQUH)y>$lrtUjf0J#Di;UTk-ZGVw=^ zZHkGBv$oM^QPqW7$kV479z)buAl>EJ^3M3(1%2%lvze&gMo{1ys5-LRweP2n6Z23? zSnk>EU(F$k>kVnCTOZ5Z*M^Ct(XB8Hv&1u|#6KYWcseHNY-i!;livo*&-(<7RI+^n zZCS@rqhy$ScUESSk*19TqO}=T4igpbF)sL#porYjXEvfgDrIM~%cQ0%U7!;lJfQwsl*H8m|Lp*#lL&Z=Czw<&I41_mc3L`9QCex0};!B+^SPq6L1S zzDiRG73cGpmhAp46S!t-VYgQm_VH_>@b9NCo&t(;A{#u|9u2qLpQn<%We>z5hVgH=ZK|}h}SFB~b+x0~qi`iRJ;VW2)WASx+At$Sg z0}MT9oX*%Ak#um8QMfmpUQXpOaaYgDiLc5h4e6fuxrkR-|K5<8X4WB6l5e^7(cid| z@J^sd?D|zusl(_}@+m)n?MxcFc>bsn_guu{xcsESL0+nK*e####H7zRbtJ2LeADvQ6q00`y{PR z?i?DMX#~GmOw!#EAhCCuzm{sZ$|{0D{&THB*9;vCw1?k-?7CqW`4tVXxlZ{s-#lMv z@%duaLnbs8;vz<6`;Q-Zekiw>iOVJ32&zm8z4{7R_httu79)4IkP{+l%li1&Vw>wj z)QqYzmy9b-F=&e016XF5#$kbiHBP!19otc_#U8O8W;KHv6ScdIgIPq|D^dW=84K_w zcEDzkG5N9Y@IfT0R8BR@k#)&)8F_6%k!6zYn6~O5#Dl$aK0w%}^~)N@7(8ZPD7SPk}68h5nu*x5eT zx1)HXCjGVCQzkC_U!>v&<;BjwbIAILB)Cje(~e&DN}};0tVRm74$Gp{V48YX$eeT)g-p0;PYVgPXjV%6iJ3%3yXCr$^U`@AESRP%MQL6WsEwoJ@B zN5@04s%*fJ#8o`8QCb)^_l0X@6Blng6DSq3il__HP~M1ecHkYqR{-y*JAzI-KVZ8Q zziuehcE}ARKp~1U()S^aZ&BgwytNB)+}=RbhIfwk-hdhwXPHh{fD*lRBYJsfvNOUC z8|A`Wrk|9BVy7igpyh9=IgS~bcJ(S#?!#Jyhk=a$9gLS)eY&i z=mi#*?_qy@Bb^A!Om&cF1+WdolqF0IV8Wz7mLiRs574$nI7fkLC|7pN`x(?3Y7^<- z0Jd2k%F8V2_KglJ8Gb&K41O_|1e@eYFo5#%N*p@u+Gbr@ct76i9JR^4KQ5GpGU8nt zgZJ~VR^t)IJ579&TWFXuewDU%YsB~_hW-R&I_MjpS;9Wea55~O@;)dD^04fbmhsp7 z<0iihSz7rpy2DnAc1ovaB{kn`K{8 zIT~vITfb2}eJ^nh3Zf?&Yu71^KayXkm)siZoM)tAKXg6>l$+1(=#w-Xc9rFc!yobh zun6dXG&5GChk(Z<3N+v4q!VOfi=(MS-X4LjE;V)p4-S3(YH5N@nE#IQU#vnspxdOs z_0@U1amTuHN*`7b6&5pE@Wc=~I$oEIc{(%0u-`P@pCHPGvJSS67!b@GMGIUP`U)(h zlAD?7UD(*qU6{PpFE;yXv?)BJWy1Z3B0nv8I6udYy0m8yt zMAF0&eg)t!L8w6VmyGytGM+XckHKQ}6aCl|1UgUOxH+(z%nK1_^7I1U-u>8jCoEI- zcBkL1SIvBAC8hX-?VD%N$6%}T64eUzhGv0r6)bc4@|PnWMFbql${a8afdPicf{goU zcBm5dDovYbT_P7R7J}UUr+b zc31sK(GLJ1@|*G%R=L8vzEQpCwxbAn{+pAdeFp786%crT0FN81sKi>=yLPuPz_v!~ zjuqUY!p=%9o@zTRQRcnqFOWg;ZS!YQNLEGbqnE91Tw%6U^b%ZSSO&>)73`0`+|ql) zMID!{7Jhs>7CST`;tMZ3PI^2FO7#E4aE4xZLQkq3cM*Ez(Zu&dTR#i>V;v5J@*ggo znz<0JcslCV^Xt%I3D@-w$7oj|4s#h=pVNk(tB&Akf`{kQ0lS+9a`Z9YY4*nv^B071 ztcZcP!T@j=h-*o>3+m091%Ny}I7p@xM`urEHgjQ~ z{ELTSdine21W&DKug#g=&X$~$-!ikcj)`qDicAbHc5S;}ViI+15(tD-WRdKN{ELhH zj~|eN1N%hw6L^4P)X(1dTYwJOIQs~7&@-}y{N6pyub8ftP#vsM^;T>DZsPNe4j?;F zV$ANF7(ME;tyOx1WztXG*ink?Z~Ybf8|?y^{jb;!pqh*f>plz?zS;z8|1I)sw?fNl zA%pNj=~CZG%!v9aP|HiQDS<%J^;y66ftL*{e>OmXa%ca+Mj|h4H0AO}cT*hu-xhVS z`>}VfKs5{@6;4#5Q1~;A|8$E#!P;#y1w;!fQDgITfP2Xo7-81n&U)UdB0dd$kt#&j> zwWA}xA}>OSO#+7bHaj{_V_CXrCq@6CmK2!2CPRr}wezdGkf#9aG+6wCrr_p2uruR- z7xgQx>!5Bb$}L1|(E5NN#En8zZ+$;*?L!+V&7Z5=ycru8{kM)f0i;2rO=KB95jh0W zBHSEpLBOXR;*o=@Z2(w1Wv!dIoTX4)f0gAobITb*8nGkCHq1;d3rsN@o0N$T>USGu zNo>LwsHlI`7eJTL9}6gZsGT4V{L2FHFQ$&LSnWR1noRQ`_v=r|&P)%lm8RMFa*w(! z5B^yJ&SX4y# zWb|7&#V?@qkA_NKUb+3{sLWR>Iqi4x>p{dw8C~B~5cBqpf;oqH!Sr6zjjfT9Gxq$X z0B;dow=zhi2mnEHs17LyWlEpbxZ2#p{uvHuCVhp(1=)!M2sAX5l5V7|e05t&n2EYO z;ty9`D`%kpZ@HY=H5+O`D*bVzDxnED9O?7>;xqu5iqd|&Z3|GJp8MO`f!Zw@8Oz^} z2-I#-cgOty^zzAKYCcXiqrn5zrnU0U?&!r!E{0)zQ~H;}WM@2N{sZl_G5{YyU0oX9 z_#XTjN2=?B84}M3{3fPW`at*Rw8eSdC*M6qObc?JfcH!C%l$^Cc4)x~)9F^f&1#!8 zkEf>Rb-U4*S)OqJL7HtpYh-Jbr*df+NiSfz386O8`UAd5LlZ({&o)V3EG@W|7{K!6 z6e;4nNb)zJ+84?cBvL@=PZ6%gE7xu}VG`W2T*e0zTQ$4cGjY(m$#V!Ess7EBs=F@> zdS5DO)O@r>h&qj+ghjl@Bbu{zt^)k=7aqjO0_&Scw7w|1m7yV40mR6Rnb&UlmD<$+ zKF^J8u{TPY>OSAjWc5;hk$0dCMn6Fx(zAckiBw!M~JL#!1t-3tI?9>iR9dZn6DWwsRPb$o+Nrjmcu)fWk zLGgn(T^#P}7z21Bs;UC29RzWMV&X3AXka^Io!4n2bz*yq4k&KxX{$A-VMkwn1?+ZJVUw9 z!cN|)z1?_NhooA78~%lMYE1M~dVPxkK~NyQrcv)Ibe~K_td#u9%Nk7Ai7orrLkm=r zmWIXu;H-pbVa9{|Z9e7GJ~;BOu8P&3_#pAv@L(XQ&TxoA#%&!FyV88 z_CxK|W6q};9rJnlFhokw1M@8dukzPW0kux_1-${=Ee8sbxf^EQX8=4TvYlzaeDhb^ zW%%Kw#-zhv1s)C;E$$67!4X`jTfQ4STnwg!dC6M5uS5X4qR zl$88|!hHbCAMHcC0UdYi+Oh9f!Qs1fb9Lj;_F9SEx279~!ehd;cn-+8xYHbiuEu<* z`#oBp-0DNvx}qHVeQC^2u6pN5rPh|7W--ddsvP+^q@u7B&M7|-Zu2ie06=D|#t@GL z)~COafxwGZPW+fG8TgnyVyK}RJ%JON&B7h51jj(;{hljf4SZIE zXiR=%rG)?&YwM6p(>D76+=i9!e~huWeGZzSA;fk{*Ri&`qR>yhh3U>8*BM2U8_e zjJM1{5MD|$-Twp${}rMHgezyO%VeGT*}C#Kso-Tg{ik!?{nBwOCC?j#%+n-G)LF`E zOv_b5XY+F`UzmYGOaKLo1Wo7gcGj4{nD0Wlu;gNJ*06d9$< z+#lYNCD>>DX3Nd)Zl-|=Zy`eIbrgw7?GnMphXy_!y)gu*rlq`+?w(ggnS~C zgp}i+aT)nfk85-MVzu|wf82EGyA*coGu4MGyWIwm6j13T?&O367iVJZ^)(27QIq7z z8G#)=OeCm*ziuj6o$5X``fw{V=UR5`aFMBJ`|1isue)TC=2;MZI*m=La#?sCppNyz z7(Ik;*?WR86vUnJr;H(u5#b9@cRSz7>!m|d%%0kgINnZNmAb^u10obIx)^yi)g_kI zbCBv_-SZGkLGid`gzUdA0zevv>MoyYI=HCImew=I&%>2omXuah!JJF@Ry{wrPgR}RMpfZ*lA?v`c_x3E_JRmEqo zu1zbAT{QuD8gQQXm%OFiLEKeH3=>_RHx`3jn|gIbgvzqFjbvw}dfw452d#r@@Qc6b zB4onUbz({cCUS7u-umBDSjbA*pH;)&+eIma;w?#4WarIDmLw9zIBu@~;-Y;C(GTPY zhW-wFHvpUx!D96Jn$zf1n_!tj9ua#h^v zcFO%d-7|sjrs-@QtY}CXNYh|ZCTjkpe?%XE$>otfPqRd4lRp>uZxhKm)J(SemL$Yn zenh762gy+V%8%Ql;ISM`x-bejBY0C32qru1RqQNdBiI1JKDm}nn!Z1E>*G@vEK_zK zf)h<_H+LumCZG$t4Bgh&TEm}dBH70Xx}NPPVH{V>%x!D6bX#tas_8H0DpQ&q zreP+;b1W zuYX~l;a4pKj}qmimg;L_&e~%k?O?xBeLf!n56Ur8){YD~tl5JIFcDdMuiXCp@~ZO0 zPlIgm+6&jLCrWY=<$@`@a%yw6OMtAutfv!0W9Mb9TdwBS$2j1;5iMZSjD8gYU?d%t zWaw7ww6jzj7q2j;!;oZ1_<2SB*RF}us}Zx9)ztYJ2AnGrz{s_wbu5{PxKq&wZ|!Gh zJ0oPjnt{BE+8XM?0wOidQfO-yAM3UmrEJe^u)l4Nb&@AMhMDE)-q&`-V}l&?znn=7 zAi?B7`_{*C@~z``#67eSu)S%0ckKa*T;PvGJ}0}DZP7(2mGszouE{BexzJjWwd1Jo z&cHW{*Qh!Nu^*gQ4dOz<%N+v$^UVMoD*d>;6YI(WNdkEL+^M-jJ&4<}?@woncN6X2 z*2tteX*YQJ-B49> zEjXDEuwKa~WuH)SG^_|Po!|_<(~@YJ?NlGCrp`25I3}?Pyf(*baS(bnH7&AV&}y{C z79@W`#uFNcxc6YJr@YX6tIlNgu+wSAk*@wot%r*V_wH+_mU1Liz0et50S>C`Qa5Pp zacfOq$NFP1IAi|wi)quX!L+IhRS9>5mGweYjK$F+M&pW{1_55aEZ3$XfT9n{Be9|m zPqdH;^#z>Bxbq98bLp)4dbAK%hb=8@EB$F*S>SH`ZomLuhXo5sa5^HQ*7<^4=D^z@dBq0= zF}Jku2cu9%AZE@-^6FPxV7^7|)u5~waQQae4C|EPES~^tMaAqUv{m@m|?#rKF z!*?V~iad+U9e7C!a@8;1{zVi$WhUvOkcO*(n6n-I!v2)(y6ZTF@pbt?zW9S(XCW5A zGMiF|)q1}h0ok+x9J9Quek`U~;jxJOnkTYDO9!XaR+$bGwRyCPXqT&iqusF5I{3&c zC(+vof+Lt;!QP2zn79(B=-S53bXEpA_Pk1r0YFGrZTpAUJ3!bXp}zPd)%mFhKS5 z;x03wQAZU3n#jBD3dz}7ir42>Ci5`duJax|)2KpSj`st;Od}QHZNYI75h-)A+Y6h=H3y)-8aMO^ro;}IF@0ak! zYnT@{XF%c?#1$z+8-i-D`l;^QqA