├── .github └── workflows │ ├── gradle.yml │ └── maven.yml ├── .gitignore ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── mvnw ├── mvnw.cmd ├── pom.xml ├── settings.gradle └── src ├── assemble └── distribution.xml ├── main └── java │ └── com │ └── gazbert │ └── patterns │ ├── behavioural │ ├── chainofresponsibility │ │ ├── AbstractDocumentReviewHandler.java │ │ ├── DocumentReviewHandler.java │ │ ├── EngineeringReviewHandler.java │ │ ├── SalesReviewHandler.java │ │ ├── SupportReviewHandler.java │ │ ├── TestingReviewHandler.java │ │ └── package-info.java │ ├── command │ │ ├── CommandInvoker.java │ │ ├── OrderCommand.java │ │ ├── commands │ │ │ ├── OrderBookBuyCommand.java │ │ │ ├── OrderBookCancelCommand.java │ │ │ ├── OrderBookSellCommand.java │ │ │ ├── RegulateBuyOrderCommand.java │ │ │ └── RegulateSellOrderCommand.java │ │ ├── domain │ │ │ └── Order.java │ │ ├── package-info.java │ │ └── receivers │ │ │ ├── OrderBook.java │ │ │ └── RegulatorySystem.java │ ├── observer │ │ ├── jdkeventing │ │ │ ├── DollarEuroMarket.java │ │ │ ├── DollarSterlingMarket.java │ │ │ ├── LatestMarketBidPriceEvent.java │ │ │ ├── Market.java │ │ │ ├── MarketEventListener.java │ │ │ ├── MarketType.java │ │ │ └── bots │ │ │ │ ├── AbstractTradingBot.java │ │ │ │ ├── BoATradingBot.java │ │ │ │ ├── GoldmanTradingBot.java │ │ │ │ └── HsbcTradingBot.java │ │ ├── jdkobserver │ │ │ ├── DollarEuroMarket.java │ │ │ ├── DollarStirlingMarket.java │ │ │ ├── Market.java │ │ │ └── bots │ │ │ │ ├── AbstractTradingBot.java │ │ │ │ ├── BoATradingBot.java │ │ │ │ ├── GoldmanTradingBot.java │ │ │ │ └── HsbcTradingBot.java │ │ ├── oldskool │ │ │ ├── DollarEuroMarket.java │ │ │ ├── DollarStirlingMarket.java │ │ │ ├── Market.java │ │ │ ├── MarketObserver.java │ │ │ └── bots │ │ │ │ ├── AbstractTradingBot.java │ │ │ │ ├── BoATradingBot.java │ │ │ │ ├── GoldmanTradingBot.java │ │ │ │ └── HsbcTradingBot.java │ │ └── package-info.java │ ├── state │ │ ├── BugState.java │ │ ├── BugTrackerContext.java │ │ ├── ClosedState.java │ │ ├── CustomerSupportState.java │ │ ├── EngineeringState.java │ │ ├── TestingState.java │ │ └── package-info.java │ ├── strategy │ │ ├── DoubleBottomStrategy.java │ │ ├── DoubleTopStrategy.java │ │ ├── HeadAndShoulders.java │ │ ├── NullOrder.java │ │ ├── Order.java │ │ ├── OrderBook.java │ │ ├── SupportAndResistance.java │ │ ├── TradingEngineContext.java │ │ ├── TradingStrategy.java │ │ ├── ValidOrder.java │ │ └── package-info.java │ ├── template │ │ ├── AmericanGrowthFund.java │ │ ├── FundInfoCollectionTemplate.java │ │ ├── JapanSpecialSituationsFund.java │ │ ├── UkAllShareTrackingFund.java │ │ ├── UkMidCapEquityFund.java │ │ └── package-info.java │ └── visitor │ │ ├── AbstractTrade.java │ │ ├── AbstractTradePart.java │ │ ├── BuyOrder.java │ │ ├── FuturesTrade.java │ │ ├── SellOrder.java │ │ ├── SpotTrade.java │ │ ├── Trade.java │ │ ├── TradeValidator.java │ │ ├── TradeVisitor.java │ │ ├── TransactionFee.java │ │ ├── Visitable.java │ │ └── package-info.java │ ├── creational │ ├── abstractfactory │ │ ├── AbstractCustomerFactory.java │ │ ├── OffshoreInvestmentCustomerFactory.java │ │ ├── OnshoreInvestmentCustomerFactory.java │ │ ├── account │ │ │ ├── Account.java │ │ │ ├── PlatinumAccount.java │ │ │ └── StandardAccount.java │ │ ├── address │ │ │ ├── Address.java │ │ │ ├── DomicileAddress.java │ │ │ └── OffshoreAddress.java │ │ ├── package-info.java │ │ └── product │ │ │ ├── Product.java │ │ │ ├── TaxExemptInvestmentFund.java │ │ │ └── TaxableInvestmentFund.java │ ├── builder │ │ ├── AbstractCustomerBuilder.java │ │ ├── AbstractCustomerDirector.java │ │ ├── Address.java │ │ ├── BorrowingCustomerBuilder.java │ │ ├── BorrowingCustomerDirector.java │ │ ├── InvestingCustomerBuilder.java │ │ ├── InvestingCustomerDirector.java │ │ ├── account │ │ │ ├── AbstractAccount.java │ │ │ ├── Account.java │ │ │ ├── PlatinumAccount.java │ │ │ └── StandardAccount.java │ │ ├── customer │ │ │ ├── AbstractCustomer.java │ │ │ ├── BorrowingCustomer.java │ │ │ ├── Customer.java │ │ │ ├── InvestingCustomer.java │ │ │ ├── LoanCustomer.java │ │ │ ├── MortgageCustomer.java │ │ │ ├── SavingsCustomer.java │ │ │ └── StockbrokingCustomer.java │ │ └── package-info.java │ ├── factorymethod │ │ ├── InvestmentFactory.java │ │ ├── InvestmentFundFactory.java │ │ ├── InvestmentSavingsFactory.java │ │ ├── package-info.java │ │ └── products │ │ │ ├── BaseProduct.java │ │ │ ├── Gilt.java │ │ │ ├── GuaranteedIncomeBond.java │ │ │ ├── InvestmentTrust.java │ │ │ ├── Oeic.java │ │ │ ├── Product.java │ │ │ └── SavingsDepositAccount.java │ ├── singleton │ │ ├── ClassicEagerSingleton.java │ │ ├── ClassicLazySingletonUsingDoubleCheckedLocking.java │ │ ├── ClassicLazySingletonUsingSynchronizedMethod.java │ │ ├── SingletonUsingEnum.java │ │ └── package-info.java │ └── staticfactorymethod │ │ ├── InvestmentFundFactory.java │ │ └── package-info.java │ └── structural │ ├── adapter │ ├── AbstractAccount.java │ ├── Account.java │ ├── AccountAdapter.java │ ├── PlatinumAccount.java │ ├── StandardAccount.java │ ├── package-info.java │ └── thirdparty │ │ └── OffshoreAccount.java │ ├── decorator │ ├── AbstractAccount.java │ ├── Account.java │ ├── AccountDecorator.java │ ├── BorrowingAccount.java │ ├── InvestingAccount.java │ ├── IsaAccount.java │ ├── LoanAccount.java │ ├── MortgageAccount.java │ ├── OffshoreAccount.java │ ├── SavingsAccount.java │ ├── StandardAccount.java │ ├── StockbrokingAccount.java │ └── package-info.java │ └── facade │ ├── MarketMaker.java │ ├── ReconciliationSystem.java │ ├── RegulatorySystem.java │ ├── RiskAndControlSystem.java │ ├── SalesAndMarketingSystem.java │ ├── SettlementSystem.java │ ├── TradeDetails.java │ ├── TradingEngine.java │ ├── TradingFacade.java │ └── package-info.java └── test └── java └── com └── gazbert └── patterns ├── behavioural ├── chainofresponsibility │ └── TestChainOfResponsibilityPattern.java ├── command │ └── TestCommandPattern.java ├── observer │ ├── jdkeventing │ │ └── TestEventingObserverPattern.java │ ├── jdkobserver │ │ └── TestJavaUtilsObserverPattern.java │ └── oldskool │ │ └── TestOldSkoolObserverPattern.java ├── state │ └── TestStatePattern.java ├── strategy │ └── TestStategyPattern.java ├── template │ └── TestTemplateMethod.java └── visitor │ └── TestVisitorPattern.java ├── creational ├── abstractfactory │ └── TestAbstractFactoryPattern.java ├── builder │ └── TestBuilderPattern.java ├── factorymethod │ └── TestFactoryMethodPattern.java ├── singleton │ └── TestSingletonPattern.java └── staticfactorymethod │ └── TestStaticFactoryMethodPattern.java └── structural ├── adapter └── TestAdapterPattern.java ├── decorator └── TestDecoratorPattern.java └── facade └── TestFacadePattern.java /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/.github/workflows/gradle.yml -------------------------------------------------------------------------------- /.github/workflows/maven.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/.github/workflows/maven.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/.gitignore -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/.mvn/wrapper/maven-wrapper.properties -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/README.md -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/gradlew.bat -------------------------------------------------------------------------------- /mvnw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/mvnw -------------------------------------------------------------------------------- /mvnw.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/mvnw.cmd -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/pom.xml -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'java-design-patterns' 2 | -------------------------------------------------------------------------------- /src/assemble/distribution.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/assemble/distribution.xml -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/AbstractDocumentReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/AbstractDocumentReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/DocumentReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/DocumentReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/EngineeringReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/EngineeringReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/SalesReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/SalesReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/SupportReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/SupportReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/TestingReviewHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/TestingReviewHandler.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/chainofresponsibility/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/CommandInvoker.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/CommandInvoker.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/OrderCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/OrderCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookBuyCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookBuyCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookCancelCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookCancelCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookSellCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/commands/OrderBookSellCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/commands/RegulateBuyOrderCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/commands/RegulateBuyOrderCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/commands/RegulateSellOrderCommand.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/commands/RegulateSellOrderCommand.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/domain/Order.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/domain/Order.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/receivers/OrderBook.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/receivers/OrderBook.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/command/receivers/RegulatorySystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/command/receivers/RegulatorySystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/DollarEuroMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/DollarEuroMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/DollarSterlingMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/DollarSterlingMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/LatestMarketBidPriceEvent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/LatestMarketBidPriceEvent.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/Market.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/Market.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/MarketEventListener.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/MarketEventListener.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/MarketType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/MarketType.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/AbstractTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/AbstractTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/BoATradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/BoATradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/GoldmanTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/GoldmanTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/HsbcTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkeventing/bots/HsbcTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/DollarEuroMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/DollarEuroMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/DollarStirlingMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/DollarStirlingMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/Market.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/Market.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/AbstractTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/AbstractTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/BoATradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/BoATradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/GoldmanTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/GoldmanTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/HsbcTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/jdkobserver/bots/HsbcTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/DollarEuroMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/DollarEuroMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/DollarStirlingMarket.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/DollarStirlingMarket.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/Market.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/Market.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/MarketObserver.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/MarketObserver.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/AbstractTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/AbstractTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/BoATradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/BoATradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/GoldmanTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/GoldmanTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/HsbcTradingBot.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/oldskool/bots/HsbcTradingBot.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/observer/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/observer/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/BugState.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/BugState.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/BugTrackerContext.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/BugTrackerContext.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/ClosedState.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/ClosedState.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/CustomerSupportState.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/CustomerSupportState.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/EngineeringState.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/EngineeringState.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/TestingState.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/TestingState.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/state/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/state/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/DoubleBottomStrategy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/DoubleBottomStrategy.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/DoubleTopStrategy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/DoubleTopStrategy.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/HeadAndShoulders.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/HeadAndShoulders.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/NullOrder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/NullOrder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/Order.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/Order.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/OrderBook.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/OrderBook.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/SupportAndResistance.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/SupportAndResistance.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/TradingEngineContext.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/TradingEngineContext.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/TradingStrategy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/TradingStrategy.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/ValidOrder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/ValidOrder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/strategy/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/strategy/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/AmericanGrowthFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/AmericanGrowthFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/FundInfoCollectionTemplate.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/FundInfoCollectionTemplate.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/JapanSpecialSituationsFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/JapanSpecialSituationsFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/UkAllShareTrackingFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/UkAllShareTrackingFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/UkMidCapEquityFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/UkMidCapEquityFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/template/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/template/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/AbstractTrade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/AbstractTrade.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/AbstractTradePart.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/AbstractTradePart.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/BuyOrder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/BuyOrder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/FuturesTrade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/FuturesTrade.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/SellOrder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/SellOrder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/SpotTrade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/SpotTrade.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/Trade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/Trade.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/TradeValidator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/TradeValidator.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/TradeVisitor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/TradeVisitor.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/TransactionFee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/TransactionFee.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/Visitable.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/Visitable.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/behavioural/visitor/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/behavioural/visitor/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/AbstractCustomerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/AbstractCustomerFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/OffshoreInvestmentCustomerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/OffshoreInvestmentCustomerFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/OnshoreInvestmentCustomerFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/OnshoreInvestmentCustomerFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/account/Account.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/account/Account.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/account/PlatinumAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/account/PlatinumAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/account/StandardAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/account/StandardAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/address/Address.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/address/Address.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/address/DomicileAddress.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/address/DomicileAddress.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/address/OffshoreAddress.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/address/OffshoreAddress.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/product/Product.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/product/Product.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/product/TaxExemptInvestmentFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/product/TaxExemptInvestmentFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/abstractfactory/product/TaxableInvestmentFund.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/abstractfactory/product/TaxableInvestmentFund.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/AbstractCustomerBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/AbstractCustomerBuilder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/AbstractCustomerDirector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/AbstractCustomerDirector.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/Address.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/Address.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/BorrowingCustomerBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/BorrowingCustomerBuilder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/BorrowingCustomerDirector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/BorrowingCustomerDirector.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/InvestingCustomerBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/InvestingCustomerBuilder.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/InvestingCustomerDirector.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/InvestingCustomerDirector.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/account/AbstractAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/account/AbstractAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/account/Account.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/account/Account.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/account/PlatinumAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/account/PlatinumAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/account/StandardAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/account/StandardAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/AbstractCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/AbstractCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/BorrowingCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/BorrowingCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/Customer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/InvestingCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/InvestingCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/LoanCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/LoanCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/MortgageCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/MortgageCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/SavingsCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/SavingsCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/customer/StockbrokingCustomer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/customer/StockbrokingCustomer.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/builder/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/builder/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentFundFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentFundFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentSavingsFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/InvestmentSavingsFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/BaseProduct.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/BaseProduct.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/Gilt.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/Gilt.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/GuaranteedIncomeBond.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/GuaranteedIncomeBond.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/InvestmentTrust.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/InvestmentTrust.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/Oeic.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/Oeic.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/Product.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/Product.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/factorymethod/products/SavingsDepositAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/factorymethod/products/SavingsDepositAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/singleton/ClassicEagerSingleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/singleton/ClassicEagerSingleton.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/singleton/ClassicLazySingletonUsingDoubleCheckedLocking.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/singleton/ClassicLazySingletonUsingDoubleCheckedLocking.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/singleton/ClassicLazySingletonUsingSynchronizedMethod.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/singleton/ClassicLazySingletonUsingSynchronizedMethod.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/singleton/SingletonUsingEnum.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/singleton/SingletonUsingEnum.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/singleton/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/singleton/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/staticfactorymethod/InvestmentFundFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/staticfactorymethod/InvestmentFundFactory.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/creational/staticfactorymethod/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/creational/staticfactorymethod/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/AbstractAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/AbstractAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/Account.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/Account.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/AccountAdapter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/AccountAdapter.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/PlatinumAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/PlatinumAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/StandardAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/StandardAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/adapter/thirdparty/OffshoreAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/adapter/thirdparty/OffshoreAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/AbstractAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/AbstractAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/Account.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/Account.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/AccountDecorator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/AccountDecorator.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/BorrowingAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/BorrowingAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/InvestingAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/InvestingAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/IsaAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/IsaAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/LoanAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/LoanAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/MortgageAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/MortgageAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/OffshoreAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/OffshoreAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/SavingsAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/SavingsAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/StandardAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/StandardAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/StockbrokingAccount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/StockbrokingAccount.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/decorator/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/decorator/package-info.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/MarketMaker.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/MarketMaker.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/ReconciliationSystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/ReconciliationSystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/RegulatorySystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/RegulatorySystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/RiskAndControlSystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/RiskAndControlSystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/SalesAndMarketingSystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/SalesAndMarketingSystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/SettlementSystem.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/SettlementSystem.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/TradeDetails.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/TradeDetails.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/TradingEngine.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/TradingEngine.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/TradingFacade.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/TradingFacade.java -------------------------------------------------------------------------------- /src/main/java/com/gazbert/patterns/structural/facade/package-info.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/main/java/com/gazbert/patterns/structural/facade/package-info.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/chainofresponsibility/TestChainOfResponsibilityPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/chainofresponsibility/TestChainOfResponsibilityPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/command/TestCommandPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/command/TestCommandPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/observer/jdkeventing/TestEventingObserverPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/observer/jdkeventing/TestEventingObserverPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/observer/jdkobserver/TestJavaUtilsObserverPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/observer/jdkobserver/TestJavaUtilsObserverPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/observer/oldskool/TestOldSkoolObserverPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/observer/oldskool/TestOldSkoolObserverPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/state/TestStatePattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/state/TestStatePattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/strategy/TestStategyPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/strategy/TestStategyPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/template/TestTemplateMethod.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/template/TestTemplateMethod.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/behavioural/visitor/TestVisitorPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/behavioural/visitor/TestVisitorPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/creational/abstractfactory/TestAbstractFactoryPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/creational/abstractfactory/TestAbstractFactoryPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/creational/builder/TestBuilderPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/creational/builder/TestBuilderPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/creational/factorymethod/TestFactoryMethodPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/creational/factorymethod/TestFactoryMethodPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/creational/singleton/TestSingletonPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/creational/singleton/TestSingletonPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/creational/staticfactorymethod/TestStaticFactoryMethodPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/creational/staticfactorymethod/TestStaticFactoryMethodPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/structural/adapter/TestAdapterPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/structural/adapter/TestAdapterPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/structural/decorator/TestDecoratorPattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/structural/decorator/TestDecoratorPattern.java -------------------------------------------------------------------------------- /src/test/java/com/gazbert/patterns/structural/facade/TestFacadePattern.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gazbert/java-design-patterns/HEAD/src/test/java/com/gazbert/patterns/structural/facade/TestFacadePattern.java --------------------------------------------------------------------------------