├── .gitignore ├── AbstractFactoryPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── bean │ │ ├── Product.java │ │ ├── Role.java │ │ └── User.java │ │ ├── client │ │ └── Client.java │ │ ├── dao │ │ ├── product │ │ │ ├── IProductDao.java │ │ │ ├── MySQLProductDao.java │ │ │ ├── OracleProductDao.java │ │ │ └── PostgreSQLProductDao.java │ │ ├── role │ │ │ ├── IRoleDao.java │ │ │ ├── MySQLRoleDao.java │ │ │ ├── OracleRoleDao.java │ │ │ └── PostgreSQLRoleDao.java │ │ └── user │ │ │ ├── IUserDao.java │ │ │ ├── MySQLUserDao.java │ │ │ ├── OracleUserDao.java │ │ │ └── PostgreSQLUserDao.java │ │ └── factory │ │ ├── IDaoFactory.java │ │ ├── MySQLDaoFactory.java │ │ ├── OracleDaoFactory.java │ │ └── PostgreSQLDaoFactory.java │ └── resources │ └── log4j2.xml ├── AdapterPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── adaptee │ │ └── Adaptee.java │ │ ├── client │ │ └── AdapterClient.java │ │ └── target │ │ ├── Adapter.java │ │ ├── ConcreteTarget.java │ │ └── ITarget.java │ └── resources │ └── log4j2.xml ├── BridgePattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── brand │ │ ├── AbstractCar.java │ │ ├── BMWCar.java │ │ ├── BenZCar.java │ │ └── LandRoverCar.java │ │ ├── client │ │ └── BridgeClient.java │ │ └── transmission │ │ ├── Auto.java │ │ ├── Manual.java │ │ └── Transmission.java │ └── resources │ └── log4j2.xml ├── CompositePattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── client │ │ └── Client1.java │ │ └── organization │ │ ├── Company.java │ │ ├── Department.java │ │ └── Organization.java │ └── resources │ └── log4j2.xml ├── DynamicProxy ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── client │ │ ├── CgLibProxyClient.java │ │ ├── DynamicProxyPerfClient.java │ │ ├── JDKDynamicProxyClient.java │ │ └── StaticProxyClient.java │ │ ├── proxy │ │ ├── cglibproxy │ │ │ └── SubjectInterceptor.java │ │ ├── jdkproxy │ │ │ ├── MultiProxyHandler.java │ │ │ └── SubjectProxyHandler.java │ │ └── staticproxy │ │ │ ├── $Proxy17.java │ │ │ └── ProxySubject.java │ │ └── subject │ │ ├── ConcreteSubject.java │ │ └── ISubject.java │ └── resources │ └── log4j2.xml ├── FactoryMethodPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── bean │ │ └── User.java │ │ ├── client │ │ └── Client.java │ │ ├── dao │ │ ├── IUserDao.java │ │ ├── MySQLUserDao.java │ │ ├── OracleUserDao.java │ │ └── PostgreSQLUserDao.java │ │ └── factory │ │ ├── IDaoFactory.java │ │ ├── MySQLDaoFactory.java │ │ ├── OracleDaoFactory.java │ │ └── PostgreSQLDaoFactory.java │ └── resources │ └── log4j2.xml ├── FlyweightPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── client │ │ └── FlyWeightClient.java │ │ ├── factory │ │ └── FlyWeightFactory.java │ │ └── flyweight │ │ ├── ConcreteFlyWeight.java │ │ ├── FlyWeight.java │ │ └── UnSharedFlyWeight.java │ └── resources │ └── log4j2.xml ├── LICENSE ├── ObserverPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── client │ │ └── Client1.java │ │ ├── observer │ │ ├── Architect.java │ │ ├── ITalent.java │ │ ├── JuniorEngineer.java │ │ └── SeniorEngineer.java │ │ └── subject │ │ ├── AbstractHR.java │ │ └── HeadHunter.java │ └── resources │ └── log4j2.xml ├── ProxyAndDecoratorPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── client │ │ ├── DecoratorClient.java │ │ └── StaticProxyClient.java │ │ ├── decorator │ │ ├── SubjectPostDecorator.java │ │ └── SubjectPreDecorator.java │ │ ├── proxy │ │ └── ProxySubject.java │ │ └── subject │ │ ├── ConcreteSubject.java │ │ └── ISubject.java │ └── resources │ └── log4j2.xml ├── README.md ├── SimpleFactoryPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── annotation │ │ └── Vehicle.java │ │ ├── client │ │ ├── Driver1.java │ │ ├── Driver2.java │ │ ├── Driver3.java │ │ ├── Driver4.java │ │ ├── Driver5.java │ │ └── JDBC.java │ │ ├── factory │ │ ├── CarFactory1.java │ │ ├── CarFactory2.java │ │ └── CarFactory3.java │ │ └── product │ │ ├── BMWCar.java │ │ ├── BenzCar.java │ │ ├── Car.java │ │ └── LandRoverCar.java │ └── resources │ ├── car.xml │ └── log4j2.xml ├── SingletonPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── singleton1 │ │ └── Singleton.java │ │ ├── singleton2 │ │ └── Singleton.java │ │ ├── singleton3 │ │ └── Singleton.java │ │ ├── singleton4 │ │ └── Singleton.java │ │ ├── singleton5 │ │ └── Singleton.java │ │ ├── singleton6 │ │ └── Singleton.java │ │ ├── singleton7 │ │ └── Singleton.java │ │ ├── singleton8 │ │ └── Singleton.java │ │ └── singleton9 │ │ └── Singleton.java │ └── resources │ └── log4j2.xml ├── StrategyPattern └── src │ └── main │ ├── java │ └── com │ │ └── jasongj │ │ ├── annotation │ │ └── Strategy.java │ │ ├── client │ │ ├── SimpleClient.java │ │ └── SimpleFactoryClient.java │ │ ├── context │ │ ├── SimpleContext.java │ │ └── SimpleFactoryContext.java │ │ └── strategy │ │ ├── ConcreteStrategyA.java │ │ ├── ConcreteStrategyB.java │ │ └── Strategy.java │ └── resources │ ├── log4j2.xml │ └── strategy.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/.gitignore -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/bean/Product.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/bean/Product.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/bean/Role.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/bean/Role.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/bean/User.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/bean/User.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/client/Client.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/client/Client.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/IProductDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/IProductDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/MySQLProductDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/MySQLProductDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/OracleProductDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/OracleProductDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/PostgreSQLProductDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/product/PostgreSQLProductDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/IRoleDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/IRoleDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/MySQLRoleDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/MySQLRoleDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/OracleRoleDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/OracleRoleDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/PostgreSQLRoleDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/role/PostgreSQLRoleDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/IUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/IUserDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/MySQLUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/MySQLUserDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/OracleUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/OracleUserDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/PostgreSQLUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/dao/user/PostgreSQLUserDao.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/factory/IDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/factory/IDaoFactory.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/factory/MySQLDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/factory/MySQLDaoFactory.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/factory/OracleDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/factory/OracleDaoFactory.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/java/com/jasongj/factory/PostgreSQLDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/java/com/jasongj/factory/PostgreSQLDaoFactory.java -------------------------------------------------------------------------------- /AbstractFactoryPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AbstractFactoryPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /AdapterPattern/src/main/java/com/jasongj/adaptee/Adaptee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/java/com/jasongj/adaptee/Adaptee.java -------------------------------------------------------------------------------- /AdapterPattern/src/main/java/com/jasongj/client/AdapterClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/java/com/jasongj/client/AdapterClient.java -------------------------------------------------------------------------------- /AdapterPattern/src/main/java/com/jasongj/target/Adapter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/java/com/jasongj/target/Adapter.java -------------------------------------------------------------------------------- /AdapterPattern/src/main/java/com/jasongj/target/ConcreteTarget.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/java/com/jasongj/target/ConcreteTarget.java -------------------------------------------------------------------------------- /AdapterPattern/src/main/java/com/jasongj/target/ITarget.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/java/com/jasongj/target/ITarget.java -------------------------------------------------------------------------------- /AdapterPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/AdapterPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/brand/AbstractCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/brand/AbstractCar.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/brand/BMWCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/brand/BMWCar.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/brand/BenZCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/brand/BenZCar.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/brand/LandRoverCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/brand/LandRoverCar.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/client/BridgeClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/client/BridgeClient.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/transmission/Auto.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/transmission/Auto.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/transmission/Manual.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/transmission/Manual.java -------------------------------------------------------------------------------- /BridgePattern/src/main/java/com/jasongj/transmission/Transmission.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/java/com/jasongj/transmission/Transmission.java -------------------------------------------------------------------------------- /BridgePattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/BridgePattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /CompositePattern/src/main/java/com/jasongj/client/Client1.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/CompositePattern/src/main/java/com/jasongj/client/Client1.java -------------------------------------------------------------------------------- /CompositePattern/src/main/java/com/jasongj/organization/Company.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/CompositePattern/src/main/java/com/jasongj/organization/Company.java -------------------------------------------------------------------------------- /CompositePattern/src/main/java/com/jasongj/organization/Department.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/CompositePattern/src/main/java/com/jasongj/organization/Department.java -------------------------------------------------------------------------------- /CompositePattern/src/main/java/com/jasongj/organization/Organization.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/CompositePattern/src/main/java/com/jasongj/organization/Organization.java -------------------------------------------------------------------------------- /CompositePattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/CompositePattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /DynamicProxy/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/build.gradle -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/client/CgLibProxyClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/client/CgLibProxyClient.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/client/DynamicProxyPerfClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/client/DynamicProxyPerfClient.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/client/JDKDynamicProxyClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/client/JDKDynamicProxyClient.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/client/StaticProxyClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/client/StaticProxyClient.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/proxy/cglibproxy/SubjectInterceptor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/proxy/cglibproxy/SubjectInterceptor.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/proxy/jdkproxy/MultiProxyHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/proxy/jdkproxy/MultiProxyHandler.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/proxy/jdkproxy/SubjectProxyHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/proxy/jdkproxy/SubjectProxyHandler.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/proxy/staticproxy/$Proxy17.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/proxy/staticproxy/$Proxy17.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/proxy/staticproxy/ProxySubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/proxy/staticproxy/ProxySubject.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/subject/ConcreteSubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/subject/ConcreteSubject.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/java/com/jasongj/subject/ISubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/java/com/jasongj/subject/ISubject.java -------------------------------------------------------------------------------- /DynamicProxy/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/DynamicProxy/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/bean/User.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/bean/User.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/client/Client.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/client/Client.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/dao/IUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/dao/IUserDao.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/dao/MySQLUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/dao/MySQLUserDao.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/dao/OracleUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/dao/OracleUserDao.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/dao/PostgreSQLUserDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/dao/PostgreSQLUserDao.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/factory/IDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/factory/IDaoFactory.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/factory/MySQLDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/factory/MySQLDaoFactory.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/factory/OracleDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/factory/OracleDaoFactory.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/java/com/jasongj/factory/PostgreSQLDaoFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/java/com/jasongj/factory/PostgreSQLDaoFactory.java -------------------------------------------------------------------------------- /FactoryMethodPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FactoryMethodPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /FlyweightPattern/src/main/java/com/jasongj/client/FlyWeightClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/java/com/jasongj/client/FlyWeightClient.java -------------------------------------------------------------------------------- /FlyweightPattern/src/main/java/com/jasongj/factory/FlyWeightFactory.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/java/com/jasongj/factory/FlyWeightFactory.java -------------------------------------------------------------------------------- /FlyweightPattern/src/main/java/com/jasongj/flyweight/ConcreteFlyWeight.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/java/com/jasongj/flyweight/ConcreteFlyWeight.java -------------------------------------------------------------------------------- /FlyweightPattern/src/main/java/com/jasongj/flyweight/FlyWeight.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/java/com/jasongj/flyweight/FlyWeight.java -------------------------------------------------------------------------------- /FlyweightPattern/src/main/java/com/jasongj/flyweight/UnSharedFlyWeight.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/java/com/jasongj/flyweight/UnSharedFlyWeight.java -------------------------------------------------------------------------------- /FlyweightPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/FlyweightPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/LICENSE -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/client/Client1.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/client/Client1.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/observer/Architect.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/observer/Architect.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/observer/ITalent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/observer/ITalent.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/observer/JuniorEngineer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/observer/JuniorEngineer.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/observer/SeniorEngineer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/observer/SeniorEngineer.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/subject/AbstractHR.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/subject/AbstractHR.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/java/com/jasongj/subject/HeadHunter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/java/com/jasongj/subject/HeadHunter.java -------------------------------------------------------------------------------- /ObserverPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ObserverPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/client/DecoratorClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/client/DecoratorClient.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/client/StaticProxyClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/client/StaticProxyClient.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/decorator/SubjectPostDecorator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/decorator/SubjectPostDecorator.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/decorator/SubjectPreDecorator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/decorator/SubjectPreDecorator.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/proxy/ProxySubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/proxy/ProxySubject.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/subject/ConcreteSubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/subject/ConcreteSubject.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/java/com/jasongj/subject/ISubject.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/java/com/jasongj/subject/ISubject.java -------------------------------------------------------------------------------- /ProxyAndDecoratorPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/ProxyAndDecoratorPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/README.md -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/annotation/Vehicle.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/annotation/Vehicle.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver1.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver1.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver2.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver2.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver3.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver3.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver4.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver4.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver5.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/Driver5.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/client/JDBC.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/client/JDBC.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory1.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory1.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory2.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory2.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory3.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/factory/CarFactory3.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/product/BMWCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/product/BMWCar.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/product/BenzCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/product/BenzCar.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/product/Car.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/product/Car.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/java/com/jasongj/product/LandRoverCar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/java/com/jasongj/product/LandRoverCar.java -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/resources/car.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/resources/car.xml -------------------------------------------------------------------------------- /SimpleFactoryPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SimpleFactoryPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton1/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton1/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton2/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton2/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton3/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton3/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton4/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton4/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton5/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton5/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton6/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton6/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton7/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton7/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton8/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton8/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/java/com/jasongj/singleton9/Singleton.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/java/com/jasongj/singleton9/Singleton.java -------------------------------------------------------------------------------- /SingletonPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/SingletonPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/annotation/Strategy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/annotation/Strategy.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/client/SimpleClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/client/SimpleClient.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/client/SimpleFactoryClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/client/SimpleFactoryClient.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/context/SimpleContext.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/context/SimpleContext.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/context/SimpleFactoryContext.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/context/SimpleFactoryContext.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/strategy/ConcreteStrategyA.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/strategy/ConcreteStrategyA.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/strategy/ConcreteStrategyB.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/strategy/ConcreteStrategyB.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/java/com/jasongj/strategy/Strategy.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/java/com/jasongj/strategy/Strategy.java -------------------------------------------------------------------------------- /StrategyPattern/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/resources/log4j2.xml -------------------------------------------------------------------------------- /StrategyPattern/src/main/resources/strategy.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/StrategyPattern/src/main/resources/strategy.xml -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/gradlew.bat -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/habren/JavaDesignPattern/HEAD/settings.gradle --------------------------------------------------------------------------------