├── gupaoedu-vip-pattern ├── gupaoedu-vip-pattern-state │ └── src │ │ └── main │ │ ├── resources │ │ └── application.properties │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── state │ │ ├── order │ │ ├── OrderStatus.java │ │ ├── OrderStatusChangeEvent.java │ │ ├── IOrderService.java │ │ └── Order.java │ │ └── gper │ │ ├── Test.java │ │ ├── LoginState.java │ │ ├── UserState.java │ │ └── UnLoginState.java ├── gupaoedu-vip-pattern-singleton │ ├── SeriableSingleton.obj │ └── src │ │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── pattern │ │ │ └── singleton │ │ │ └── test │ │ │ ├── Pojo.java │ │ │ ├── LazySimpleSingletonTest.java │ │ │ ├── ContainerSingletonTest.java │ │ │ └── ThreadLocalSingletonTest.java │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── singleton │ │ ├── register │ │ └── EnumSingleton.java │ │ ├── hungry │ │ ├── HungrySingleton.java │ │ └── HungryStaticSingleton.java │ │ ├── general │ │ └── Client.java │ │ ├── lazy │ │ ├── LazySimpleSingletion.java │ │ └── LazyDoubleCheckSingleton.java │ │ ├── threadlocal │ │ └── ThreadLocalSingleton.java │ │ └── seriable │ │ └── SeriableSingleton.java ├── gupaoedu-vip-pattern-bridge │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── bridge │ │ ├── course │ │ ├── IVideo.java │ │ ├── ICourse.java │ │ ├── INote.java │ │ ├── JavaVideo.java │ │ ├── PythonVideo.java │ │ ├── JavaCourse.java │ │ ├── PythonCourse.java │ │ ├── JavaNote.java │ │ ├── PythonNote.java │ │ └── AbstractCourse.java │ │ └── message │ │ ├── IMessage.java │ │ ├── NomalMessage.java │ │ ├── EmailMessage.java │ │ ├── SmsMessage.java │ │ ├── AbastractMessage.java │ │ ├── UrgencyMessage.java │ │ └── Test.java ├── gupaoedu-vip-pattern-mediator │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── mediator │ │ ├── rpc │ │ ├── IService.java │ │ ├── BService.java │ │ ├── CService.java │ │ ├── AService.java │ │ └── Registy.java │ │ └── chatroom │ │ ├── ChatRoom.java │ │ ├── Test.java │ │ └── User.java ├── gupaoedu-vip-pattern-command │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── command │ │ └── player │ │ ├── IAction.java │ │ ├── GPlayer.java │ │ ├── actions │ │ ├── PlayAction.java │ │ ├── StopAction.java │ │ ├── PauseAction.java │ │ └── SpeedAction.java │ │ └── Controller.java ├── gupaoedu-vip-pattern-delegate │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── pattern │ │ │ └── delegate │ │ │ ├── simple │ │ │ ├── IEmployee.java │ │ │ ├── Boss.java │ │ │ ├── EmployeeA.java │ │ │ ├── EmployeeB.java │ │ │ ├── Test.java │ │ │ └── Leader.java │ │ │ └── mvc │ │ │ └── controllers │ │ │ ├── SystemController.java │ │ │ ├── MemberController.java │ │ │ └── OrderController.java │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── gupaoedu-vip-pattern-flyweight │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── flyweight │ │ ├── ticket │ │ ├── ITicket.java │ │ ├── Test.java │ │ ├── TrainTicket.java │ │ └── TicketFacotry.java │ │ ├── pool │ │ └── Test.java │ │ └── jdk │ │ └── IntegerTest.java ├── gupaoedu-vip-pattern-adapter │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── adapter │ │ ├── demo │ │ ├── power │ │ │ ├── classadapter │ │ │ │ ├── DC5.java │ │ │ │ ├── Test.java │ │ │ │ ├── AC220.java │ │ │ │ └── PowerAdapter.java │ │ │ ├── objectadapter │ │ │ │ ├── DC5.java │ │ │ │ ├── AC220.java │ │ │ │ ├── Test.java │ │ │ │ └── PowerAdapter.java │ │ │ └── interfaceadapter │ │ │ │ ├── DC.java │ │ │ │ ├── AC220.java │ │ │ │ └── Test.java │ │ └── passport │ │ │ ├── adapterv2 │ │ │ ├── Test.java │ │ │ ├── adapters │ │ │ │ ├── ILoginAdapter.java │ │ │ │ ├── LoginForTelAdapter.java │ │ │ │ ├── LoginForWechatAdapter.java │ │ │ │ ├── LoginForTokenAdapter.java │ │ │ │ ├── AbstraceAdapter.java │ │ │ │ └── LoginForQQAdapter.java │ │ │ └── IPassportForThird.java │ │ │ ├── adapterv1 │ │ │ ├── Test.java │ │ │ └── IPassportForThird.java │ │ │ └── PassportService.java │ │ └── general │ │ ├── classadapter │ │ ├── ITarget.java │ │ ├── Adaptee.java │ │ ├── Adapter.java │ │ └── Client.java │ │ ├── objectadapter │ │ ├── ITarget.java │ │ ├── Adaptee.java │ │ ├── Client.java │ │ └── Adapter.java │ │ └── interfaceadapter │ │ ├── Adaptee.java │ │ ├── ITarget.java │ │ ├── Client.java │ │ └── Adapter.java ├── gupaoedu-vip-pattern-proxy │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── proxy │ │ ├── dbroute │ │ ├── IOrderService.java │ │ ├── OrderDao.java │ │ ├── OrderService.java │ │ ├── db │ │ │ └── DynamicDataSourceEntity.java │ │ └── Order.java │ │ ├── staticproxy │ │ ├── IPerson.java │ │ ├── ZhaoLiu.java │ │ ├── ZhangSan.java │ │ ├── Test.java │ │ └── ZhangLaosan.java │ │ └── dynamicproxy │ │ ├── jdkproxy │ │ ├── IPerson.java │ │ ├── ZhaoLiu.java │ │ └── Zhangsan.java │ │ ├── gpproxy │ │ ├── client │ │ │ ├── IPerson.java │ │ │ ├── Zhangsan.java │ │ │ └── Test.java │ │ └── proxy │ │ │ └── GPInvocationHandler.java │ │ └── cglibproxy │ │ └── Customer.java ├── gupaoedu-vip-pattern-visitor │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── pattern │ │ │ └── visitor │ │ │ ├── dispatch │ │ │ ├── dymdispatch │ │ │ │ ├── Person.java │ │ │ │ ├── Man.java │ │ │ │ ├── WoMan.java │ │ │ │ └── Main.java │ │ │ └── staticdispatch │ │ │ │ └── Main.java │ │ │ └── kpi │ │ │ ├── IVisitor.java │ │ │ ├── Employee.java │ │ │ ├── CTOVistitor.java │ │ │ ├── CEOVistitor.java │ │ │ ├── Test.java │ │ │ ├── Manager.java │ │ │ ├── Engineer.java │ │ │ └── BusinessReport.java │ └── pom.xml ├── gupaoedu-vip-pattern-iterator │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── iterator │ │ └── course │ │ ├── Iterator.java │ │ ├── ICourseAggregate.java │ │ ├── Course.java │ │ ├── CourseAggregateImpl.java │ │ └── IteratorImpl.java ├── gupaoedu-vip-pattern-observer │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── observer │ │ ├── mouseevent │ │ ├── core │ │ │ └── EventListener.java │ │ ├── handler │ │ │ └── MouseEventType.java │ │ └── Test.java │ │ ├── guava │ │ ├── VoEvent.java │ │ ├── PojoEvent.java │ │ ├── Vo.java │ │ ├── Pojo.java │ │ └── Test.java │ │ └── gper │ │ ├── Question.java │ │ ├── Test.java │ │ ├── GPer.java │ │ └── Teacher.java ├── gupaoedu-vip-pattern-factorymethod │ ├── target │ │ └── classes │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── pattern │ │ │ └── factory │ │ │ └── factorymethod │ │ │ ├── course │ │ │ ├── Test.class │ │ │ ├── products │ │ │ │ ├── ICourse.class │ │ │ │ ├── JavaCourse.class │ │ │ │ └── PythonCourse.class │ │ │ └── factorys │ │ │ │ ├── ICourseFactory.class │ │ │ │ ├── JavaCourseFactory.class │ │ │ │ └── PythonCourseFactory.class │ │ │ └── general │ │ │ ├── Client.class │ │ │ ├── Client$FactoryA.class │ │ │ ├── Client$FactoryB.class │ │ │ ├── Client$FactoryC.class │ │ │ ├── Client$IFactory.class │ │ │ ├── Client$IProduct.class │ │ │ ├── Client$ProductA.class │ │ │ ├── Client$ProductB.class │ │ │ └── Client$ProductC.class │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── factory │ │ └── factorymethod │ │ └── course │ │ ├── products │ │ ├── ICourse.java │ │ ├── JavaCourse.java │ │ └── PythonCourse.java │ │ └── factorys │ │ ├── ICourseFactory.java │ │ ├── JavaCourseFactory.java │ │ └── PythonCourseFactory.java ├── gupaoedu-vip-pattern-strategy │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── strategy │ │ ├── promotion │ │ ├── IPromotionStrategy.java │ │ ├── EmptyStrategy.java │ │ ├── CouponStrategy.java │ │ ├── GroupbuyStrategy.java │ │ ├── CashbackStrategy.java │ │ ├── PromotionActivity.java │ │ └── Test.java │ │ └── pay │ │ ├── payport │ │ ├── AliPay.java │ │ ├── JDPay.java │ │ ├── UnionPay.java │ │ ├── WechatPay.java │ │ └── Payment.java │ │ ├── Test.java │ │ └── MsgResult.java ├── gupaoedu-vip-pattern-interpreter │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── interpreter │ │ ├── adcalc │ │ ├── IArithmeticInterpreter.java │ │ ├── NumInterpreter.java │ │ ├── AddInterpreter.java │ │ ├── DivInterpreter.java │ │ ├── SubInterpreter.java │ │ ├── MultiInterpreter.java │ │ ├── Interpreter.java │ │ ├── OperatorEnum.java │ │ └── Test.java │ │ └── calculate │ │ ├── IArithmeticInterpreter.java │ │ ├── NumInterpreter.java │ │ ├── AddInterpreter.java │ │ ├── DivInterpreter.java │ │ ├── SubInterpreter.java │ │ ├── MultilInterpreter.java │ │ ├── Interpreter.java │ │ ├── Test.java │ │ └── SpringTest.java ├── gupaoedu-vip-pattern-abstractfactory │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── factory │ │ └── abstractfactory │ │ └── course │ │ ├── products │ │ ├── INote.java │ │ ├── IVideo.java │ │ ├── ICourse.java │ │ ├── PythonVideo.java │ │ ├── JavaVideo.java │ │ ├── JavaNote.java │ │ ├── PythonCourse.java │ │ ├── PythonNote.java │ │ └── JavaCourse.java │ │ ├── Test.java │ │ └── factorys │ │ ├── CourseFactory.java │ │ ├── JavaCourseFactory.java │ │ └── PythonCourseFactory.java ├── gupaoedu-vip-pattern-decorator │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── decorator │ │ ├── battercake │ │ ├── v2 │ │ │ ├── Battercake.java │ │ │ ├── BaseBattercake.java │ │ │ ├── EggDecorator.java │ │ │ ├── SausageDecorator.java │ │ │ ├── Test.java │ │ │ └── BattercakeDecorator.java │ │ └── v1 │ │ │ ├── Battercake.java │ │ │ ├── BattercakeWithEgg.java │ │ │ ├── BattercakeWithEggAndSauage.java │ │ │ └── BattercakeTest.java │ │ └── loggs │ │ └── JsonLoggerFactory.java ├── gupaoedu-vip-pattern-simplefactory │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── factory │ │ └── simplefactory │ │ ├── JavaCouse.java │ │ ├── PythonCouse.java │ │ ├── ICouse.java │ │ └── Test.java ├── gupaoedu-vip-pattern-template │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── template │ │ ├── course │ │ ├── PythonCourse.java │ │ ├── Test.java │ │ └── JavaCourse.java │ │ └── jdbc │ │ ├── framework │ │ └── RowMapper.java │ │ └── Test.java ├── gupaoedu-vip-pattern-facade │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── facade │ │ └── points │ │ ├── PaymentService.java │ │ ├── QualifyService.java │ │ ├── GiftInfo.java │ │ ├── ShippingService.java │ │ ├── Test.java │ │ └── GiftFacadeService.java ├── gupaoedu-vip-pattern-chain │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── chain │ │ └── auth │ │ ├── optimiaze │ │ ├── Test.java │ │ ├── Handler.java │ │ ├── LoginHandler.java │ │ ├── AuthHandler.java │ │ ├── ValidateHandler.java │ │ └── MemberService.java │ │ └── builderchain │ │ ├── Test.java │ │ ├── LoginHandler.java │ │ ├── AuthHandler.java │ │ ├── MemberService.java │ │ └── ValidateHandler.java ├── gupaoedu-vip-pattern-composite │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── composite │ │ └── demo │ │ ├── safe │ │ ├── File.java │ │ └── Direcotry.java │ │ └── transparent │ │ └── Course.java ├── gupaoedu-vip-pattern-prototype │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── prototype │ │ ├── demo │ │ ├── Client.java │ │ └── BeanUtils.java │ │ └── singleton │ │ ├── Client.java │ │ └── ConcretePrototype.java ├── gupaoedu-vip-pattern-builder │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── builder │ │ ├── chain │ │ ├── Test.java │ │ └── Course.java │ │ ├── simple │ │ ├── Test.java │ │ ├── CourseBuilder.java │ │ └── Course.java │ │ ├── innerclass │ │ └── Test.java │ │ └── sql │ │ └── Test.java └── gupaoedu-vip-pattern-memento │ ├── src │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── memento │ │ └── editor │ │ └── DraftsBox.java │ └── pom.xml ├── gupaoedu-vip-design-uml ├── src │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── design │ │ └── uml │ │ └── classdiagrams │ │ ├── generalization │ │ ├── Bus.java │ │ ├── Taxi.java │ │ └── Car.java │ │ ├── aggregate │ │ ├── Hat.java │ │ ├── Clothes.java │ │ └── BusDriver.java │ │ ├── dependency │ │ ├── Oil.java │ │ └── Car.java │ │ ├── combination │ │ ├── Body.java │ │ ├── Head.java │ │ └── Human.java │ │ ├── realization │ │ ├── Vehicle.java │ │ ├── Car.java │ │ └── Ship.java │ │ └── association │ │ ├── Driver.java │ │ └── Car.java └── pom.xml ├── gupaoedu-vip-design-principle ├── gupaoedu-vip-design-principle-lawofdemeter │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── demeter │ │ │ ├── Course.java │ │ │ ├── TeamLeader.java │ │ │ ├── LodTest.java │ │ │ └── Employee.java │ └── pom.xml ├── gupaoedu-vip-design-principle-dependencyinversion │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── dependencyinversion │ │ │ ├── ICourse.java │ │ │ ├── JavaCourse.java │ │ │ └── PythonCourse.java │ └── pom.xml ├── gupaoedu-vip-design-principle-interfacegregation │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── interfacesegregation │ │ │ ├── segregation │ │ │ ├── IEatAminal.java │ │ │ ├── IFlyAminal.java │ │ │ ├── ISwimAminal.java │ │ │ ├── Bird.java │ │ │ └── Dog.java │ │ │ └── simple │ │ │ ├── IAnimal.java │ │ │ ├── Bird.java │ │ │ └── Dog.java │ └── pom.xml ├── gupaoedu-vip-design-principle-liskovsubstitution │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── liskovsutiution │ │ │ ├── QuadRangle.java │ │ │ ├── methodreturn │ │ │ ├── Base.java │ │ │ ├── MethodReturnTest.java │ │ │ └── Child.java │ │ │ ├── methodparam │ │ │ ├── Base.java │ │ │ ├── MethodParamTest.java │ │ │ └── Child.java │ │ │ ├── Square.java │ │ │ ├── simple │ │ │ └── Rectangle.java │ │ │ └── Rectangle.java │ └── pom.xml ├── gupaoedu-vip-design-principle-openclose │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── openclose │ │ │ ├── ICourse.java │ │ │ ├── JavaDiscountCourse.java │ │ │ ├── OpenCloseTest.java │ │ │ └── JavaCourse.java │ └── pom.xml ├── gupaoedu-vip-design-principle-simpleresponsibility │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── gupaoedu │ │ │ └── vip │ │ │ └── design │ │ │ └── principle │ │ │ └── simpleresponsibility │ │ │ ├── interfaced │ │ │ ├── ICourseInfo.java │ │ │ ├── ICourseManager.java │ │ │ ├── ICourse.java │ │ │ └── CourseImpl.java │ │ │ ├── simple │ │ │ ├── LiveCourse.java │ │ │ ├── ReplayCourse.java │ │ │ └── Course.java │ │ │ └── method │ │ │ └── Method.java │ └── pom.xml └── gupaoedu-vip-design-principle-compositereuse │ ├── src │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── design │ │ └── principle │ │ └── compositereuse │ │ ├── MySQLConnection.java │ │ ├── MyOracleConnection.java │ │ ├── DBConnection.java │ │ ├── CopTest.java │ │ └── ProductDao.java │ └── pom.xml └── gupaoedu-vip-new-pattern ├── gupaoedu-vip-pattern-objectpool ├── src │ └── main │ │ └── java │ │ └── com │ │ └── gupaoedu │ │ └── vip │ │ └── pattern │ │ └── objectpool │ │ └── pool │ │ ├── Client.java │ │ ├── Attributes.java │ │ └── ObjectPoolFactory.java └── pom.xml ├── gupaoedu-vip-pattern-servant └── pom.xml ├── gupaoedu-vip-pattern-specification └── pom.xml └── gupaoedu-vip-pattern-nullobject └── pom.xml /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | logging.level.root=error -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/SeriableSingleton.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/SeriableSingleton.obj -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/IVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IVideo { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ICourse { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/rpc/IService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.rpc; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IService { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/generalization/Bus.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.generalization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Bus extends Car { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/generalization/Taxi.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.generalization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Taxi extends Car { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/aggregate/Hat.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.aggregate; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Hat { 7 | private String name; 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/INote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface INote { 7 | void edit(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/JavaVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JavaVideo implements IVideo { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/dependency/Oil.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.dependency; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Oil { 7 | private String type; 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/PythonVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonVideo implements IVideo { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/aggregate/Clothes.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.aggregate; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Clothes { 7 | private String name; 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/combination/Body.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.combination; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Body { 7 | private String name; 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/combination/Head.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.combination; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Head { 7 | private String name; 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/realization/Vehicle.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.realization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface Vehicle { 7 | void run(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JavaCourse extends AbstractCourse { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/PythonCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonCourse extends AbstractCourse { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/IAction.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IAction { 7 | void execute(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-lawofdemeter/src/main/java/com/gupaoedu/vip/design/principle/demeter/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.demeter; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Course { 7 | } 8 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/IEmployee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IEmployee { 7 | void doing(String task); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/ticket/ITicket.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.ticket; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ITicket { 7 | void showInfo(String bunk); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/classadapter/DC5.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface DC5 { 7 | int output5V(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dbroute/IOrderService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dbroute; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IOrderService { 7 | int createOrder(Order order); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/dispatch/dymdispatch/Person.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.dispatch.dymdispatch; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface Person { 7 | void test(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/objectadapter/DC5.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface DC5 { 7 | int output5V(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/classadapter/ITarget.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ITarget { 7 | int request(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/objectadapter/ITarget.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ITarget { 7 | int request(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/staticproxy/IPerson.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.staticproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IPerson { 7 | 8 | void findLove(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/dependency/Car.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.dependency; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Car { 7 | public void beforeRun(Oil oil){ 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/generalization/Car.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.generalization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Car { 7 | private String name; 8 | public void run(){} 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-iterator/src/main/java/com/gupaoedu/vip/pattern/iterator/course/Iterator.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.iterator.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface Iterator { 7 | E next(); 8 | boolean hasNext(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/order/OrderStatus.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.order; 2 | 3 | /** 4 | * 订单状态 5 | */ 6 | public enum OrderStatus { 7 | // 待支付,待发货,待收货,订单结束 8 | WAIT_PAYMENT, WAIT_DELIVER, WAIT_RECEIVE, FINISH; 9 | } -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/order/OrderStatusChangeEvent.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.order; 2 | 3 | /** 4 | * 订单状态改变事件 5 | */ 6 | public enum OrderStatusChangeEvent { 7 | // 支付,发货,确认收货 8 | PAYED, DELIVERY, RECEIVED; 9 | } -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/JavaNote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JavaNote implements INote { 7 | public void edit() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/mouseevent/core/EventListener.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.mouseevent.core; 2 | 3 | 4 | /** 5 | * 观察者抽象 6 | * Created by Tom. 7 | */ 8 | public interface EventListener { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/PythonNote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonNote implements INote { 7 | public void edit() { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/Test.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/Test.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/IMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IMessage { 7 | //发送消息的内容和接收人 8 | void send(String message,String toUser); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/IPromotionStrategy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * 促销策略抽象 5 | * Created by Tom. 6 | */ 7 | public interface IPromotionStrategy { 8 | void doPromotion(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/test/java/com/gupaoedu/vip/pattern/singleton/test/Pojo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.test; 2 | 3 | import com.gupaoedu.vip.pattern.singleton.register.ContainerSingleton; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Pojo { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-dependencyinversion/src/main/java/com/gupaoedu/vip/design/principle/dependencyinversion/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.dependencyinversion; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ICourse { 7 | void study(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/IArithmeticInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 表达式抽象 5 | * Created by Tom. 6 | */ 7 | public interface IArithmeticInterpreter { 8 | int interpret(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/staticproxy/ZhaoLiu.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.staticproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ZhaoLiu implements IPerson { 7 | 8 | public void findLove() { 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/realization/Car.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.realization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Car implements Vehicle { 7 | private String name; 8 | public void run() { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/realization/Ship.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.realization; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Ship implements Vehicle { 7 | private String name; 8 | public void run() { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/INote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * 课堂笔记 5 | * Created by Tom. 6 | */ 7 | public interface INote { 8 | void edit(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/ICourse.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/ICourse.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryA.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryA.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryB.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryB.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryC.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$FactoryC.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$IFactory.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$IFactory.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$IProduct.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$IProduct.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductA.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductA.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductB.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductB.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductC.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/general/Client$ProductC.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/IArithmeticInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 表达式抽象 5 | * Created by Tom. 6 | */ 7 | public interface IArithmeticInterpreter { 8 | int interpret(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/IVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * 录播视频 5 | * Created by Tom. 6 | */ 7 | public interface IVideo { 8 | void record(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/Boss.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Boss { 7 | public void command(String task,Leader leader){ 8 | leader.doing(task); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/JavaCourse.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/JavaCourse.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IVisitor { 7 | 8 | void visit(Engineer engineer); 9 | 10 | void visit(Manager manager); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/mvc/controllers/SystemController.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.mvc.controllers; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class SystemController { 7 | 8 | public void logout(){ 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/PythonCourse.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/PythonCourse.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/jdkproxy/IPerson.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.jdkproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IPerson { 7 | 8 | void findLove(); 9 | 10 | void buyInsure(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/association/Driver.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.association; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Driver { 7 | private Car car; 8 | public void addCar(Car car){ 9 | this.car = car; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/ICourseFactory.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/ICourseFactory.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/classadapter/Adaptee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Adaptee{ 7 | 8 | public int specificRequest() { 9 | return 220; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/objectadapter/Adaptee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Adaptee{ 7 | 8 | public int specificRequest() { 9 | return 220; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/JavaCourseFactory.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/JavaCourseFactory.class -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/gpproxy/client/IPerson.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.gpproxy.client; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface IPerson { 7 | 8 | void findLove(); 9 | 10 | void buyInsure(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/segregation/IEatAminal.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.segregation; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface IEatAminal { 7 | void eat(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/segregation/IFlyAminal.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.segregation; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface IFlyAminal { 7 | void fly(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/segregation/ISwimAminal.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.segregation; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ISwimAminal { 7 | void swin(); 8 | } 9 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/interfaceadapter/Adaptee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.interfaceadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Adaptee { 7 | 8 | public int specificRequest() { 9 | return 220; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/mvc/controllers/MemberController.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.mvc.controllers; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class MemberController { 7 | 8 | public void getMemberById(String mid){ 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/mvc/controllers/OrderController.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.mvc.controllers; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class OrderController { 7 | 8 | public void getOrderById(String mid){ 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/PythonCourseFactory.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gupaoedu-tom/design-samples/HEAD/gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/target/classes/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/PythonCourseFactory.class -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/QuadRangle.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface QuadRangle { 7 | long getWidth(); 8 | long getHeight(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/association/Car.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.association; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Car { 7 | private Driver driver; 8 | public void addDriver(Driver driver){ 9 | this.driver = driver; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/NomalMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class NomalMessage extends AbastractMessage { 7 | public NomalMessage(IMessage message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/rpc/BService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.rpc; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BService implements IService{ 7 | Registy registy; 8 | BService(){ 9 | registy.regist("bService",this); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-openclose/src/main/java/com/gupaoedu/vip/design/principle/openclose/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.openclose; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ICourse { 7 | Integer getId(); 8 | String getName(); 9 | Double getPrice(); 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dbroute/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dbroute; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class OrderDao { 7 | public int insert(Order order){ 8 | System.out.println("OrderDao创建Order成功!"); 9 | return 1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/dispatch/dymdispatch/Man.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.dispatch.dymdispatch; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Man implements Person { 7 | 8 | public void test() { 9 | System.out.println("男人"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/dispatch/dymdispatch/WoMan.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.dispatch.dymdispatch; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class WoMan implements Person { 7 | 8 | public void test() { 9 | System.out.println("女人"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/Battercake.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public abstract class Battercake { 7 | protected abstract String getMsg(); 8 | protected abstract int getPrice(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-iterator/src/main/java/com/gupaoedu/vip/pattern/iterator/course/ICourseAggregate.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.iterator.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ICourseAggregate { 7 | void add(Course course); 8 | void remove(Course course); 9 | Iterator iterator(); 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/cglibproxy/Customer.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.cglibproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Customer { 7 | 8 | public void findLove(){ 9 | System.out.println("儿子要求:肤白貌美大长腿"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/staticproxy/ZhangSan.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.staticproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ZhangSan implements IPerson { 7 | 8 | public void findLove() { 9 | System.out.println("儿子要求:肤白貌美大长腿"); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/rpc/CService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.rpc; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CService implements IService { 7 | Registy registy; 8 | CService(){ 9 | registy.regist("cService",this); 10 | } 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-simplefactory/src/main/java/com/gupaoedu/vip/pattern/factory/simplefactory/JavaCouse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.simplefactory; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JavaCouse implements ICouse { 7 | public void record(){ 8 | System.out.println("录制Java课程"); 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/EmptyStrategy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class EmptyStrategy implements IPromotionStrategy { 7 | public void doPromotion() { 8 | System.out.println("无优惠"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-template/src/main/java/com/gupaoedu/vip/pattern/template/course/PythonCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.template.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonCourse extends AbastractCourse { 7 | protected void checkHomework() { 8 | System.out.println("检查Python作业"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/interfaceadapter/DC.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.interfaceadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface DC { 7 | int output5V(); 8 | int output12V(); 9 | int output24V(); 10 | int output36V(); 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-simplefactory/src/main/java/com/gupaoedu/vip/pattern/factory/simplefactory/PythonCouse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.simplefactory; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonCouse implements ICouse { 7 | public void record(){ 8 | System.out.println("录制Python课程"); 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-template/src/main/java/com/gupaoedu/vip/pattern/template/jdbc/framework/RowMapper.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.template.jdbc.framework; 2 | 3 | import java.sql.ResultSet; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface RowMapper { 9 | 10 | T mapRow(ResultSet rs,int rowNum) throws Exception; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.products; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ICourse { 7 | /** 8 | * 录制视频 9 | * @return 10 | */ 11 | void record(); 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/chatroom/ChatRoom.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.chatroom; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ChatRoom { 7 | 8 | public void showMsg(User user,String msg){ 9 | System.out.println("[" + user.getName() + "] : " + msg); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/CouponStrategy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CouponStrategy implements IPromotionStrategy { 7 | public void doPromotion() { 8 | System.out.println("使用优惠券抵扣"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/simple/IAnimal.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface IAnimal { 7 | void eat(); 8 | void fly(); 9 | void swim(); 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ICourse { 7 | /** 8 | * 录制视频 9 | * @return 10 | */ 11 | void record(); 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-simplefactory/src/main/java/com/gupaoedu/vip/pattern/factory/simplefactory/ICouse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.simplefactory; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ICouse { 7 | 8 | void record(); 9 | // public void record(){ 10 | // System.out.println("录制Java课程"); 11 | // } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/GroupbuyStrategy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class GroupbuyStrategy implements IPromotionStrategy { 7 | public void doPromotion() { 8 | System.out.println("5人成团,可以优惠"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/classadapter/Adapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Adapter extends Adaptee implements ITarget { 7 | public int request() { 8 | return super.specificRequest() / 10; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/CashbackStrategy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CashbackStrategy implements IPromotionStrategy { 7 | public void doPromotion() { 8 | System.out.println("返现,直接打款到支付宝账号"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodreturn/Base.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodreturn; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * Created by Tom on 2020/2/16. 7 | */ 8 | public abstract class Base { 9 | public abstract Map method(); 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/PythonVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonVideo implements IVideo { 7 | public void record() { 8 | System.out.println("录制Python视频"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/JavaVideo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | 4 | /** 5 | * Created by Tom on. 6 | */ 7 | public class JavaVideo implements IVideo { 8 | public void record() { 9 | System.out.println("录制Java视频"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/interfaceadapter/ITarget.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.interfaceadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface ITarget { 7 | int request1(); 8 | 9 | int request2(); 10 | 11 | int request3(); 12 | 13 | int request4(); 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/EmailMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class EmailMessage implements IMessage { 7 | public void send(String message, String toUser) { 8 | System.out.println("使用邮件消息发送" + message + "给" + toUser); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/SmsMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class SmsMessage implements IMessage { 7 | public void send(String message, String toUser) { 8 | System.out.println("使用短信消息发送" + message + "给" + toUser); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/staticproxy/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.staticproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | ZhangLaosan zhangLaosan = new ZhangLaosan(new ZhangSan()); 9 | zhangLaosan.findLove(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/interfaced/ICourseInfo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.interfaced; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ICourseInfo { 7 | String getCourseName(); 8 | byte[] getCourseVideo(); 9 | } 10 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/JavaNote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * Java笔记 5 | * Created by Tom 6 | */ 7 | public class JavaNote implements INote { 8 | 9 | public void edit() { 10 | System.out.println("编写Java笔记"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/classadapter/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | DC5 adapter = new PowerAdapter(); 9 | adapter.output5V(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/PaymentService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PaymentService { 7 | 8 | public boolean pay(GiftInfo giftInfo){ 9 | System.out.println("扣减" + giftInfo.getName() + " 积分成功"); 10 | return true; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/interfaced/ICourseManager.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.interfaced; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ICourseManager { 7 | 8 | void studyCourse(); 9 | void refundCourse(); 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | MemberService memberService = new MemberService(); 9 | memberService.login("tom","666"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.products; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class JavaCourse implements ICourse { 8 | 9 | public void record() { 10 | System.out.println("录制Java课程"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/products/PythonCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.products; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonCourse implements ICourse { 7 | 8 | public void record() { 9 | System.out.println("录制Python课程"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/gper/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | AppContext context = new AppContext(); 9 | context.favorite(); 10 | context.comment("评论:好文章,360个赞"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/src/main/java/com/gupaoedu/vip/design/principle/compositereuse/MySQLConnection.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.compositereuse; 2 | 3 | /** 4 | * Created by Tom on 2020/2/17. 5 | */ 6 | public class MySQLConnection extends DBConnection { 7 | public String getConnection() { 8 | return "获取MySQL数据连接"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/PythonCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PythonCourse implements ICourse { 7 | 8 | public void record() { 9 | System.out.println("录制Python课程"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/PythonNote.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | /** 4 | * Python笔记 5 | * Created by Tom. 6 | */ 7 | public class PythonNote implements INote { 8 | 9 | public void edit() { 10 | System.out.println("编写Python笔记"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/builderchain/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.builderchain; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | MemberService memberService = new MemberService(); 9 | memberService.login("tom","666"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/src/main/java/com/gupaoedu/vip/design/principle/compositereuse/MyOracleConnection.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.compositereuse; 2 | 3 | /** 4 | * Created by Tom on 2020/2/17. 5 | */ 6 | public class MyOracleConnection extends DBConnection { 7 | public String getConnection() { 8 | return "获取Oracle数据连接"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-dependencyinversion/src/main/java/com/gupaoedu/vip/design/principle/dependencyinversion/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.dependencyinversion; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class JavaCourse implements ICourse { 7 | public void study() { 8 | System.out.println("Tom正在学习Java课程"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/products/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.products; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class JavaCourse implements ICourse { 8 | 9 | public void record() { 10 | System.out.println("录制Java课程"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v1/Battercake.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v1; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Battercake { 7 | 8 | protected String getMsg(){ 9 | return "煎饼"; 10 | } 11 | 12 | public int getPrice(){ 13 | return 5; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-dependencyinversion/src/main/java/com/gupaoedu/vip/design/principle/dependencyinversion/PythonCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.dependencyinversion; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class PythonCourse implements ICourse { 7 | public void study() { 8 | System.out.println("Tom正在学习Python课程"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/classadapter/AC220.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AC220 { 7 | public int outputAC220V(){ 8 | int output = 220; 9 | System.out.println("输出电压" + output + "V"); 10 | return output; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/objectadapter/AC220.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AC220 { 7 | public int outputAC220V(){ 8 | int output = 220; 9 | System.out.println("输出电压" + 220 + "V"); 10 | return output; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/objectadapter/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.objectadapter; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class Test { 8 | public static void main(String[] args) { 9 | DC5 adapter = new PowerAdapter(new AC220()); 10 | adapter.output5V(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-composite/src/main/java/com/gupaoedu/vip/pattern/composite/demo/safe/File.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.composite.demo.safe; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class File extends Direcotry { 7 | public File(String name) { 8 | super(name); 9 | } 10 | 11 | public void show() { 12 | System.out.println(this.name); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/QualifyService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class QualifyService { 7 | 8 | public boolean isAvailable(GiftInfo giftInfo){ 9 | System.out.println("校验" +giftInfo.getName() + "积分通过,库存通过。"); 10 | return true; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/simple/LiveCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class LiveCourse { 7 | public void study(String courseName){ 8 | System.out.println("不能快进"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/interfaceadapter/AC220.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.interfaceadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AC220 { 7 | public int outputAC220V(){ 8 | int output = 220; 9 | System.out.println("输出电压" + 220 + "V"); 10 | return output; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/interfaceadapter/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.interfaceadapter; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class Test { 8 | public static void main(String[] args) { 9 | DC adapter = new PowerAdapter(new AC220()); 10 | adapter.output5V(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/payport/AliPay.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay.payport; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AliPay extends Payment { 7 | public String getName() { 8 | return "支付宝"; 9 | } 10 | 11 | protected double queryBalance(String uid) { 12 | return 900; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/payport/JDPay.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay.payport; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JDPay extends Payment { 7 | public String getName() { 8 | return "京东白条"; 9 | } 10 | 11 | protected double queryBalance(String uid) { 12 | return 500; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/simple/ReplayCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class ReplayCourse { 7 | public void study(String courseName){ 8 | System.out.println("可以任意的来回播放"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/EmployeeA.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class EmployeeA implements IEmployee { 7 | protected String goodAt = "编程"; 8 | public void doing(String task) { 9 | System.out.println("我是员工A,我擅长" + goodAt + ",现在开始做" +task + "工作"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/EmployeeB.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class EmployeeB implements IEmployee { 7 | protected String goodAt = "平面设计"; 8 | public void doing(String task) { 9 | System.out.println("我是员工B,我擅长" + goodAt + ",现在开始做" +task + "工作"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-iterator/src/main/java/com/gupaoedu/vip/pattern/iterator/course/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.iterator.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Course { 7 | private String name; 8 | 9 | public Course(String name) { 10 | this.name = name; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/payport/UnionPay.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay.payport; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class UnionPay extends Payment { 7 | public String getName() { 8 | return "银联支付"; 9 | } 10 | 11 | protected double queryBalance(String uid) { 12 | return 120; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/BaseBattercake.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BaseBattercake extends Battercake { 7 | protected String getMsg() { 8 | return "煎饼"; 9 | } 10 | 11 | protected int getPrice() { 12 | return 5; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/GiftInfo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class GiftInfo { 7 | 8 | private String name; 9 | 10 | public GiftInfo(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/payport/WechatPay.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay.payport; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class WechatPay extends Payment { 7 | public String getName() { 8 | return "微信支付"; 9 | } 10 | 11 | protected double queryBalance(String uid) { 12 | return 263; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodparam/Base.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodparam; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * Created by Tom on 2020/2/16. 7 | */ 8 | public class Base { 9 | public void method(HashMap map){ 10 | System.out.println("父类执行"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | IPassportForThird adapter = new PassportForThirdAdapter(); 9 | adapter.loginForQQ("sdfasdfasfasfas"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/ShippingService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ShippingService { 7 | public String delivery(GiftInfo giftInfo){ 8 | System.out.println(giftInfo.getName() + "进入物流系统"); 9 | String shippingNo = "666"; 10 | return shippingNo; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | new Boss().command("海报图",new Leader()); 9 | new Boss().command("爬虫",new Leader()); 10 | new Boss().command("卖手机",new Leader()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/rpc/AService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.rpc; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AService implements IService { 7 | Registy registy; 8 | AService(){ 9 | registy.regist("aService",this); 10 | } 11 | 12 | public void a(){ 13 | //registy.get("bService").xxx(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/gpproxy/proxy/GPInvocationHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.gpproxy.proxy; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface GPInvocationHandler { 9 | public Object invoke(Object proxy, Method method, Object[] args) 10 | throws Throwable; 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/classadapter/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Client { 7 | public static void main(String[] args) { 8 | ITarget adapter = new Adapter(); 9 | int result = adapter.request(); 10 | System.out.println(result); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/ICourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.factorys; 2 | 3 | 4 | import com.gupaoedu.vip.pattern.factory.factorymethod.course.products.ICourse; 5 | 6 | /** 7 | * 工厂模型 8 | * Created by Tom. 9 | */ 10 | public interface ICourseFactory { 11 | 12 | ICourse create(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/jdkproxy/ZhaoLiu.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.jdkproxy; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class ZhaoLiu implements IPerson { 8 | 9 | public void findLove() { 10 | System.out.println("赵六要求:有车有房学历高"); 11 | } 12 | 13 | public void buyInsure() { 14 | 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/dispatch/dymdispatch/Main.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.dispatch.dymdispatch; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Main { 7 | public static void main(String[] args) { 8 | Person man = new Man(); 9 | Person woman = new WoMan(); 10 | 11 | man.test(); 12 | woman.test(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/segregation/Bird.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.segregation; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Bird implements IEatAminal,IFlyAminal { 7 | public void eat() { 8 | 9 | } 10 | 11 | public void fly() { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/segregation/Dog.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.segregation; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Dog implements ISwimAminal,IEatAminal { 7 | public void eat() { 8 | 9 | } 10 | 11 | public void swin() { 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/ILoginAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface ILoginAdapter { 9 | boolean support(Object object); 10 | ResultMsg login(String id,Object adapter); 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/objectadapter/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Client { 7 | public static void main(String[] args) { 8 | ITarget adapter = new Adapter(new Adaptee()); 9 | int result = adapter.request(); 10 | System.out.println(result); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/Handler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public abstract class Handler { 9 | protected Handler next; 10 | public void next(Handler next){ this.next = next;} 11 | 12 | public abstract void doHandler(Member member); 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-lawofdemeter/src/main/java/com/gupaoedu/vip/design/principle/demeter/TeamLeader.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.demeter; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom on 2020/2/16. 8 | */ 9 | public class TeamLeader { 10 | 11 | public void commandCheckNumber(Employee employee){ 12 | employee.checkNumberOfCourses(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/interfaced/ICourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.interfaced; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public interface ICourse { 7 | 8 | String getCourseName(); 9 | byte[] getCourseVideo(); 10 | 11 | void studyCourse(); 12 | void refundCourse(); 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/pool/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.pool; 2 | 3 | import java.sql.Connection; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Test { 9 | public static void main(String[] args) { 10 | ConnectionPool pool = new ConnectionPool(); 11 | Connection conn = pool.getConnection(); 12 | System.out.println(conn); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/gper/LoginState.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class LoginState extends UserState { 7 | @Override 8 | public void favorite() { 9 | System.out.println("收藏成功!"); 10 | } 11 | 12 | @Override 13 | public void comment(String comment) { 14 | System.out.println(comment); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/src/main/java/com/gupaoedu/vip/design/principle/compositereuse/DBConnection.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.compositereuse; 2 | 3 | /** 4 | * Created by Tom on 2020/2/17. 5 | */ 6 | public abstract class DBConnection { 7 | public abstract String getConnection(); 8 | 9 | // getConnection{ 10 | // return "获取MySQL数据连接"; 11 | // } 12 | // public String getOracleConntion(){} 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/simple/Bird.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Bird implements IAnimal { 7 | public void eat() { 8 | 9 | } 10 | 11 | public void fly() { 12 | 13 | } 14 | 15 | public void swim() { 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/src/main/java/com/gupaoedu/vip/design/principle/interfacesegregation/simple/Dog.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.interfacesegregation.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Dog implements IAnimal { 7 | public void eat() { 8 | 9 | } 10 | 11 | public void fly() { 12 | 13 | } 14 | 15 | public void swim() { 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodreturn/MethodReturnTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodreturn; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class MethodReturnTest { 7 | public static void main(String[] args) { 8 | Base child = new Child(); 9 | System.out.println(child.method()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/jdkproxy/Zhangsan.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.jdkproxy; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class Zhangsan implements IPerson { 8 | 9 | public void findLove() { 10 | System.out.println("张三要求:肤白貌美大长腿"); 11 | } 12 | 13 | public void buyInsure() { 14 | System.out.println("30万"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v1/BattercakeWithEgg.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v1; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BattercakeWithEgg extends Battercake{ 7 | 8 | protected String getMsg(){ 9 | return super.getMsg() + "+1个鸡蛋蛋"; 10 | } 11 | 12 | public int getPrice(){ 13 | return super.getPrice() + 1; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/gpproxy/client/Zhangsan.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.gpproxy.client; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Zhangsan implements IPerson { 7 | 8 | public void findLove() { 9 | System.out.println("张三要求:肤白貌美大长腿"); 10 | } 11 | 12 | public void buyInsure() { 13 | System.out.println("30万"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-simplefactory/src/main/java/com/gupaoedu/vip/pattern/factory/simplefactory/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.simplefactory; 2 | 3 | import org.slf4j.LoggerFactory; 4 | 5 | import java.util.Calendar; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class Test { 11 | public static void main(String[] args) { 12 | ICouse couse = new CourseFactory().create(JavaCouse.class); 13 | couse.record(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-lawofdemeter/src/main/java/com/gupaoedu/vip/design/principle/demeter/LodTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.demeter; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class LodTest { 7 | 8 | public static void main(String[] args) { 9 | TeamLeader teamLeader = new TeamLeader(); 10 | Employee employee = new Employee(); 11 | teamLeader.commandCheckNumber(employee); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/gper/UserState.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public abstract class UserState { 7 | protected AppContext context; 8 | 9 | public void setContext(AppContext context) { 10 | this.context = context; 11 | } 12 | 13 | public abstract void favorite(); 14 | 15 | public abstract void comment(String comment); 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay; 2 | 3 | import com.gupaoedu.vip.pattern.strategy.pay.payport.PayStrategy; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Test { 9 | public static void main(String[] args) { 10 | Order order = new Order("1","2020031401000323",324.5); 11 | System.out.println(order.pay(PayStrategy.ALI_PAY)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/src/main/java/com/gupaoedu/vip/design/principle/compositereuse/CopTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.compositereuse; 2 | 3 | /** 4 | * Created by Tom on 2020/2/17. 5 | */ 6 | public class CopTest { 7 | public static void main(String[] args) { 8 | ProductDao productDao = new ProductDao(); 9 | productDao.setConnection(new MySQLConnection()); 10 | productDao.addProduct(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/objectadapter/Adapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.objectadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Adapter implements ITarget { 7 | private Adaptee adaptee; 8 | public Adapter(Adaptee adaptee){ 9 | this.adaptee = adaptee; 10 | } 11 | public int request() { 12 | return adaptee.specificRequest() / 10; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | 10 | GiftFacadeService facadeService = new GiftFacadeService(); 11 | 12 | GiftInfo giftInfo = new GiftInfo("《Spring 5核心原理》"); 13 | 14 | facadeService.exchange(giftInfo); 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/guava/VoEvent.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.guava; 2 | 3 | import com.google.common.eventbus.Subscribe; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class VoEvent { 9 | 10 | @Subscribe 11 | public void observer(Vo arg){ 12 | // if(arg instanceof Vo){ 13 | System.out.println("执行VoEvent方法,传参为:" + arg); 14 | // } 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-template/src/main/java/com/gupaoedu/vip/pattern/template/jdbc/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.template.jdbc; 2 | 3 | import com.gupaoedu.vip.pattern.template.jdbc.dao.MemberDao; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class Test { 11 | public static void main(String[] args) { 12 | MemberDao memberDao = new MemberDao(null); 13 | List result = memberDao.selectAll(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.uml 8 | gupaoedu-vip-design-uml 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/guava/PojoEvent.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.guava; 2 | 3 | import com.google.common.eventbus.Subscribe; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class PojoEvent { 9 | 10 | @Subscribe 11 | public void observer(Pojo pojo){ 12 | // if(arg instanceof Pojo){ 13 | System.out.println("执行PojoEvent方法,传参为:" + pojo); 14 | // } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/LoginHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class LoginHandler extends Handler { 9 | public void doHandler(Member member) { 10 | System.out.println("登录成功!"); 11 | member.setRoleName("管理员"); 12 | next.doHandler(member); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/guava/Vo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.guava; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Vo { 7 | private String name; 8 | 9 | public Vo(String name) { 10 | this.name = name; 11 | } 12 | 13 | @Override 14 | public String toString() { 15 | return "Vo{" + 16 | "name='" + name + '\'' + 17 | '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/AbastractMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public abstract class AbastractMessage { 7 | private IMessage message; 8 | 9 | public AbastractMessage(IMessage message) { 10 | this.message = message; 11 | } 12 | void sendMessage(String message,String toUser){ 13 | this.message.send(message,toUser); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/builderchain/LoginHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.builderchain; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class LoginHandler extends Handler { 9 | public void doHandler(Member member) { 10 | System.out.println("登录成功!"); 11 | member.setRoleName("管理员"); 12 | next.doHandler(member); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v1/BattercakeWithEggAndSauage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v1; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BattercakeWithEggAndSauage extends BattercakeWithEgg{ 7 | 8 | protected String getMsg(){ 9 | return super.getMsg() + "+1根香肠"; 10 | } 11 | 12 | public int getPrice(){ 13 | return super.getPrice() + 2; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/NumInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 终结表达式 5 | * Created by Tom. 6 | */ 7 | public class NumInterpreter implements IArithmeticInterpreter { 8 | private int value; 9 | 10 | public NumInterpreter(int value) { 11 | this.value = value; 12 | } 13 | 14 | public int interpret() { 15 | return this.value; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/PromotionActivity.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PromotionActivity { 7 | private IPromotionStrategy strategy; 8 | 9 | public PromotionActivity(IPromotionStrategy strategy) { 10 | this.strategy = strategy; 11 | } 12 | 13 | public void execute(){ 14 | strategy.doPromotion(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/NumInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 终结表达式 5 | * Created by Tom. 6 | */ 7 | public class NumInterpreter implements IArithmeticInterpreter { 8 | private int value; 9 | 10 | public NumInterpreter(int value) { 11 | this.value = value; 12 | } 13 | 14 | public int interpret() { 15 | return this.value; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/guava/Pojo.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.guava; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Pojo { 7 | private String name; 8 | 9 | public Pojo(String name) { 10 | this.name = name; 11 | } 12 | 13 | @Override 14 | public String toString() { 15 | return "Pojo{" + 16 | "name='" + name + '\'' + 17 | '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/order/IOrderService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.order; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface IOrderService { 9 | //创建新订单 10 | Order create(); 11 | //发起支付 12 | Order pay(int id); 13 | //订单发货 14 | Order deliver(int id); 15 | //订单收货 16 | Order receive(int id); 17 | //获取所有订单信息 18 | Map getOrders(); 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/loggs/JsonLoggerFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.loggs; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class JsonLoggerFactory { 10 | 11 | 12 | public static JsonLogger getLogger(Class clazz){ 13 | Logger logger = LoggerFactory.getLogger(clazz); 14 | return new JsonLogger(logger); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/combination/Human.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.combination; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Human { 7 | private Head head; 8 | private Body body; 9 | 10 | public void setHead(Head head) { 11 | this.head = head; 12 | } 13 | 14 | public void setBody(Body body) { 15 | this.body = body; 16 | } 17 | 18 | public void display(){ 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-prototype/src/main/java/com/gupaoedu/vip/pattern/prototype/demo/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.prototype.demo; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Client { 7 | public static void main(String[] args) { 8 | 9 | // ExamPaper examPaper = new ExamPaper(); 10 | // System.out.println(examPaper); 11 | 12 | ExamPaper examPaper = (ExamPaper)BeanUtils.copy(new ExamPaper()); 13 | System.out.println(examPaper); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/chain/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.chain; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | CourseBuilder builder = new CourseBuilder() 10 | .addName("设计模式") 11 | .addPpt("【PPT课件】") 12 | .addVideo("【录播视频】"); 13 | 14 | System.out.println(builder.builder()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/test/java/com/gupaoedu/vip/pattern/singleton/test/LazySimpleSingletonTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.test; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class LazySimpleSingletonTest { 7 | public static void main(String[] args) { 8 | Thread t1 = new Thread(new ExectorThread()); 9 | Thread t2 = new Thread(new ExectorThread()); 10 | t1.start(); 11 | t2.start(); 12 | System.out.println("End"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-uml/src/main/java/com/gupaoedu/vip/design/uml/classdiagrams/aggregate/BusDriver.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.uml.classdiagrams.aggregate; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BusDriver { 7 | private Clothes clothes; 8 | private Hat hat; 9 | 10 | public void setClothes(Clothes clothes) { 11 | this.clothes = clothes; 12 | } 13 | 14 | public void setHat(Hat hat) { 15 | this.hat = hat; 16 | } 17 | 18 | public void show(){ 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/simple/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | CourseBuilder builder = new CourseBuilder(); 10 | 11 | builder.addName("设计模式"); 12 | builder.addPpt("【PPT课件】"); 13 | builder.addVideo("【录播视频】"); 14 | 15 | System.out.println(builder.builder()); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/AddInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 加法 5 | * Created by Tom. 6 | */ 7 | public class AddInterpreter extends Interpreter { 8 | public AddInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() + this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/DivInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 除法 5 | * Created by Tom. 6 | */ 7 | public class DivInterpreter extends Interpreter { 8 | public DivInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() / this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/SubInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 减法 5 | * Created by Tom. 6 | */ 7 | public class SubInterpreter extends Interpreter { 8 | public SubInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() - this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/rpc/Registy.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.rpc; 2 | 3 | /** 4 | * 5 | * //RPC Remote Procedure Call 远程过程调用 6 | * 7 | * 伪代码 8 | * Created by Tom. 9 | */ 10 | public class Registy { 11 | //通过中介者缩短调用链 12 | //服务治理 13 | public boolean regist(String serviceName,IService service){ 14 | return true; 15 | } 16 | 17 | public IService get(String serviceName){ 18 | return null; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-openclose/src/main/java/com/gupaoedu/vip/design/principle/openclose/JavaDiscountCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.openclose; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class JavaDiscountCourse extends JavaCourse { 7 | public JavaDiscountCourse(Integer id, String name, Double price) { 8 | super(id, name, price); 9 | } 10 | 11 | public Double getDiscountPrice(){ 12 | return super.getPrice() * 0.6; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/simple/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Course { 7 | public void study(String courseName){ 8 | if("直播课".equals(courseName)){ 9 | System.out.println("不能快进"); 10 | }else{ 11 | System.out.println("可以任意的来回播放"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/MultiInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 乘法 5 | * Created by Tom. 6 | */ 7 | public class MultiInterpreter extends Interpreter { 8 | public MultiInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() * this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/AddInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 加法 5 | * Created by Tom. 6 | */ 7 | public class AddInterpreter extends Interpreter { 8 | public AddInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() + this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/DivInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 除法 5 | * Created by Tom. 6 | */ 7 | public class DivInterpreter extends Interpreter { 8 | public DivInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() / this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/SubInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 减法 5 | * Created by Tom. 6 | */ 7 | public class SubInterpreter extends Interpreter { 8 | public SubInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() - this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodparam/MethodParamTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodparam; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * Created by Tom on 2020/2/16. 7 | */ 8 | public class MethodParamTest { 9 | public static void main(String[] args) { 10 | Base child = new Child(); 11 | HashMap hashMap = new HashMap(); 12 | child.method(hashMap); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/Employee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public abstract class Employee { 9 | public String name; 10 | public int kpi; //员工KPI 11 | 12 | public Employee(String name) { 13 | this.name = name; 14 | kpi = new Random().nextInt(10); 15 | } 16 | 17 | //接收访问者的访问 18 | public abstract void accept(IVisitor visitor); 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv1/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv1; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | PassportForThirdAdapter adapter = new PassportForThirdAdapter(); 9 | adapter.login("tom","123456"); 10 | adapter.loginForQQ("sjooguwoersdfjhasjfsa"); 11 | adapter.loginForWechat("slfsjoljsdo8234ssdfs"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/MultilInterpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 乘法 5 | * Created by Tom. 6 | */ 7 | public class MultilInterpreter extends Interpreter { 8 | public MultilInterpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 9 | super(left, right); 10 | } 11 | 12 | public int interpret() { 13 | return this.left.interpret() * this.right.interpret(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/register/EnumSingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.register; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public enum EnumSingleton { 7 | INSTANCE; 8 | 9 | private Object data; 10 | 11 | public Object getData() { 12 | return data; 13 | } 14 | 15 | public void setData(Object data) { 16 | this.data = data; 17 | } 18 | 19 | public static EnumSingleton getInstance(){return INSTANCE;} 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/CTOVistitor.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CTOVistitor implements IVisitor { 7 | public void visit(Engineer engineer) { 8 | System.out.println("工程师" + engineer.name + ",代码行数:" + engineer.getCodeLines()); 9 | } 10 | 11 | public void visit(Manager manager) { 12 | System.out.println("经理:" + manager.name + ",产品数量:" + manager.getProducts()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/jdk/IntegerTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.jdk; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class IntegerTest { 7 | public static void main(String[] args) { 8 | Integer a = Integer.valueOf(127); 9 | Integer b = 127; 10 | 11 | Integer c = Integer.valueOf(128); 12 | Integer d = 128; 13 | 14 | System.out.println(a == b); //true 15 | System.out.println(c == d); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/chatroom/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.chatroom; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | ChatRoom chatRoom = new ChatRoom(); 9 | 10 | User tom = new User("Tom",chatRoom); 11 | User jerry = new User("Jerry",chatRoom); 12 | 13 | tom.sendMessage("Hi! I am Tom."); 14 | jerry.sendMessage("Hello! My name is Jerry."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-openclose/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-openclose 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/CEOVistitor.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CEOVistitor implements IVisitor { 7 | public void visit(Engineer engineer) { 8 | System.out.println("工程师" + engineer.name + ",KIP:" + engineer.kpi); 9 | } 10 | 11 | public void visit(Manager manager) { 12 | System.out.println("经理:" + manager.name + ",KPI:" + manager.kpi + ",产品数量:" + manager.getProducts()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-lawofdemeter/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-lawofdemeter 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/AuthHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class AuthHandler extends Handler { 9 | public void doHandler(Member member) { 10 | if(!"管理员".equals(member.getRoleName())){ 11 | System.out.println("您不是管理员,没有操作权限"); 12 | return; 13 | } 14 | System.out.println("允许操作"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | BusinessReport report = new BusinessReport(); 9 | System.out.println("==========CEO看报表==============="); 10 | report.showReport(new CEOVistitor()); 11 | System.out.println("==========CTO看报表==============="); 12 | report.showReport(new CTOVistitor()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-compositereuse 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/classadapter/PowerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.classadapter; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PowerAdapter extends AC220 implements DC5 { 7 | public int output5V() { 8 | int adapterInput = super.outputAC220V(); 9 | int adapterOutput = adapterInput / 44; 10 | System.out.println("使用Adapter输入AC" + adapterInput + "V,输出DC" + adapterOutput + "V"); 11 | return adapterOutput; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/builderchain/AuthHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.builderchain; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class AuthHandler extends Handler { 9 | public void doHandler(Member member) { 10 | if(!"管理员".equals(member.getRoleName())){ 11 | System.out.println("您不是管理员,没有操作权限"); 12 | return; 13 | } 14 | System.out.println("允许操作"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/GPlayer.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class GPlayer { 7 | public void play(){ 8 | System.out.println("正常播放"); 9 | } 10 | 11 | public void speed(){ 12 | System.out.println("拖动进度条"); 13 | } 14 | 15 | public void stop(){ 16 | System.out.println("停止播放"); 17 | } 18 | 19 | public void pause(){ 20 | System.out.println("暂停播放"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/Interpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 非终结表达式 5 | * Created by Tom. 6 | */ 7 | public abstract class Interpreter implements IArithmeticInterpreter { 8 | 9 | protected IArithmeticInterpreter left; 10 | protected IArithmeticInterpreter right; 11 | 12 | public Interpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 13 | this.left = left; 14 | this.right = right; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/Manager.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Manager extends Employee { 9 | public Manager(String name) { 10 | super(name); 11 | } 12 | 13 | public void accept(IVisitor visitor) { 14 | visitor.visit(this); 15 | } 16 | 17 | //考核的是每年新产品研发数量 18 | public int getProducts(){ 19 | return new Random().nextInt(10); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-interfacegregation/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-interfacegregation 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-liskovsubstitution 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/Interpreter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * 非终结表达式 5 | * Created by Tom. 6 | */ 7 | public abstract class Interpreter implements IArithmeticInterpreter { 8 | 9 | protected IArithmeticInterpreter left; 10 | protected IArithmeticInterpreter right; 11 | 12 | public Interpreter(IArithmeticInterpreter left, IArithmeticInterpreter right) { 13 | this.left = left; 14 | this.right = right; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | System.out.println("result:" + new GPCalculator("10 + 30").calulate()); 10 | System.out.println("result:" + new GPCalculator("10 + 30 - 20").calulate()); 11 | System.out.println("result:" + new GPCalculator("100 * 2 + 400 * 2 + 66").calulate()); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/staticproxy/ZhangLaosan.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.staticproxy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ZhangLaosan implements IPerson { 7 | 8 | private ZhangSan zhangsan; 9 | 10 | public ZhangLaosan(ZhangSan zhangsan) { 11 | this.zhangsan = zhangsan; 12 | } 13 | 14 | public void findLove() { 15 | System.out.println("张老三开始物色"); 16 | zhangsan.findLove(); 17 | System.out.println("开始交往"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/hungry/HungrySingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.hungry; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | 7 | /** 8 | * 优点:执行效率高,性能高,没有任何的锁 9 | * 缺点:某些情况下,可能会造成内存浪费 10 | */ 11 | //饿汉式静态代码块单例模式 12 | public class HungrySingleton { 13 | 14 | private static final HungrySingleton instance = new HungrySingleton(); 15 | 16 | private HungrySingleton(){} 17 | 18 | public static HungrySingleton getInstance(){ 19 | return instance; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-dependencyinversion/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-dependencyinversion 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.design.principle 8 | gupaoedu-vip-design-principle-simpleresponsibility 9 | 1.0-SNAPSHOT 10 | 11 | 12 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/JavaCourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.factorys; 2 | 3 | 4 | import com.gupaoedu.vip.pattern.factory.factorymethod.course.products.ICourse; 5 | import com.gupaoedu.vip.pattern.factory.factorymethod.course.products.JavaCourse; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class JavaCourseFactory implements ICourseFactory { 11 | public ICourse create() { 12 | return new JavaCourse(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/Engineer.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Engineer extends Employee { 9 | public Engineer(String name) { 10 | super(name); 11 | } 12 | 13 | public void accept(IVisitor visitor) { 14 | visitor.visit(this); 15 | } 16 | 17 | //考核指标是每年的代码量 18 | public int getCodeLines(){ 19 | return new Random().nextInt(10* 10000); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/ticket/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.ticket; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | ITicket ticket = TicketFacotry.queryTicket("北京西","长沙"); 10 | ticket.showInfo("硬座"); 11 | ticket = TicketFacotry.queryTicket("北京西","长沙"); 12 | ticket.showInfo("软座"); 13 | ticket = TicketFacotry.queryTicket("北京西","长沙南"); 14 | ticket.showInfo("硬卧"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/hungry/HungryStaticSingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.hungry; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | //饿汉式静态代码块单例模式 7 | public class HungryStaticSingleton { 8 | private static final HungryStaticSingleton instance; 9 | 10 | static { 11 | instance = new HungryStaticSingleton(); 12 | } 13 | 14 | private HungryStaticSingleton(){} 15 | 16 | public static HungryStaticSingleton getInstance(){ 17 | return instance; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-compositereuse/src/main/java/com/gupaoedu/vip/design/principle/compositereuse/ProductDao.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.compositereuse; 2 | 3 | /** 4 | * Created by Tom on 2020/2/17. 5 | */ 6 | public class ProductDao { 7 | private DBConnection dbConnection; 8 | public void setConnection(DBConnection dbConnection){ 9 | this.dbConnection = dbConnection; 10 | } 11 | public void addProduct(){ 12 | String conn = dbConnection.getConnection(); 13 | System.out.println("获得数据库连接"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv1/IPassportForThird.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv1; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface IPassportForThird { 9 | 10 | ResultMsg loginForQQ(String openId); 11 | 12 | ResultMsg loginForWechat(String openId); 13 | 14 | ResultMsg loginForToken(String token); 15 | 16 | ResultMsg loginForTelphone(String phone,String code); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/IPassportForThird.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public interface IPassportForThird { 9 | 10 | ResultMsg loginForQQ(String openId); 11 | 12 | ResultMsg loginForWechat(String openId); 13 | 14 | ResultMsg loginForToken(String token); 15 | 16 | ResultMsg loginForTelphone(String phone, String code); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-factorymethod/src/main/java/com/gupaoedu/vip/pattern/factory/factorymethod/course/factorys/PythonCourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.factorymethod.course.factorys; 2 | 3 | 4 | import com.gupaoedu.vip.pattern.factory.factorymethod.course.products.ICourse; 5 | import com.gupaoedu.vip.pattern.factory.factorymethod.course.products.PythonCourse; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class PythonCourseFactory implements ICourseFactory { 11 | 12 | public ICourse create() { 13 | return new PythonCourse(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course; 2 | 3 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.factorys.JavaCourseFactory; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Test { 9 | 10 | public static void main(String[] args) { 11 | 12 | JavaCourseFactory factory = new JavaCourseFactory(); 13 | 14 | factory.createNote().edit(); 15 | factory.createVideo().record(); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/OperatorEnum.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * 操作符枚举 5 | * 6 | */ 7 | public enum OperatorEnum { 8 | LEFT_BRACKET("("), 9 | RIGHT_BRACKET(")"), 10 | SUB("-"), 11 | ADD("+"), 12 | MULTI("*"), 13 | DIV("/"), 14 | ; 15 | private String operator; 16 | 17 | public String getOperator() { 18 | return operator; 19 | } 20 | 21 | OperatorEnum(String operator) { 22 | this.operator = operator; 23 | } 24 | } -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/UrgencyMessage.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class UrgencyMessage extends AbastractMessage { 7 | public UrgencyMessage(IMessage message) { 8 | super(message); 9 | } 10 | 11 | void sendMessage(String message, String toUser){ 12 | message = "【加急】" + message; 13 | super.sendMessage(message,toUser); 14 | } 15 | 16 | public Object watch(String messageId){ 17 | return null; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/innerclass/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.innerclass; 2 | 3 | import com.gupaoedu.vip.pattern.builder.chain.CourseBuilder; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Test { 9 | public static void main(String[] args) { 10 | Course course = new Course.Builder() 11 | .addName("设计模式") 12 | .addPpt("【PPT课件】") 13 | .addVideo("【录播视频】") 14 | .builder(); 15 | 16 | System.out.println(course); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/actions/PlayAction.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player.actions; 2 | 3 | import com.gupaoedu.vip.pattern.command.player.GPlayer; 4 | import com.gupaoedu.vip.pattern.command.player.IAction; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class PlayAction implements IAction { 10 | private GPlayer gplayer; 11 | 12 | public PlayAction(GPlayer gplayer) { 13 | this.gplayer = gplayer; 14 | } 15 | 16 | public void execute() { 17 | gplayer.play(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/actions/StopAction.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player.actions; 2 | 3 | import com.gupaoedu.vip.pattern.command.player.GPlayer; 4 | import com.gupaoedu.vip.pattern.command.player.IAction; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class StopAction implements IAction { 10 | private GPlayer gplayer; 11 | 12 | public StopAction(GPlayer gplayer) { 13 | this.gplayer = gplayer; 14 | } 15 | 16 | public void execute() { 17 | gplayer.stop(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/general/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.general; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Client { 7 | public static void main(String[] args) { 8 | Singleton.getInstance(); 9 | } 10 | 11 | static class Singleton { 12 | private static final Singleton instance = new Singleton(); 13 | 14 | private Singleton(){} 15 | 16 | public static Singleton getInstance(){ 17 | return instance; 18 | } 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/actions/PauseAction.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player.actions; 2 | 3 | import com.gupaoedu.vip.pattern.command.player.GPlayer; 4 | import com.gupaoedu.vip.pattern.command.player.IAction; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class PauseAction implements IAction { 10 | private GPlayer gplayer; 11 | 12 | public PauseAction(GPlayer gplayer) { 13 | this.gplayer = gplayer; 14 | } 15 | 16 | public void execute() { 17 | gplayer.pause(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/actions/SpeedAction.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player.actions; 2 | 3 | import com.gupaoedu.vip.pattern.command.player.GPlayer; 4 | import com.gupaoedu.vip.pattern.command.player.IAction; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class SpeedAction implements IAction { 10 | private GPlayer gplayer; 11 | 12 | public SpeedAction(GPlayer gplayer) { 13 | this.gplayer = gplayer; 14 | } 15 | 16 | public void execute() { 17 | gplayer.speed(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodparam/Child.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodparam; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created by Tom on 2020/2/16. 8 | */ 9 | public class Child extends Base { 10 | // @Override 11 | // public void method(HashMap map) { 12 | // System.out.println("执行子类HashMap入参方法"); 13 | // } 14 | 15 | public void method(Map map){ 16 | System.out.println("执行子类Map入参方法"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/methodreturn/Child.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.methodreturn; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created by Tom on 2020/2/16. 8 | */ 9 | public class Child extends Base { 10 | @Override 11 | public HashMap method() { 12 | HashMap hashMap = new HashMap(); 13 | System.out.println("执行子类的method"); 14 | hashMap.put("msg","子类method"); 15 | return hashMap; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-composite/src/main/java/com/gupaoedu/vip/pattern/composite/demo/safe/Direcotry.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.composite.demo.safe; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public abstract class Direcotry { 7 | protected String name; 8 | 9 | public Direcotry(String name) { 10 | this.name = name; 11 | } 12 | 13 | public abstract void show(); 14 | 15 | // public abstract void getType(); 16 | // 17 | // public abstract void isShare(); 18 | // 19 | // public abstract void delete(); 20 | // 21 | // public abstract void reName(); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-mediator/src/main/java/com/gupaoedu/vip/pattern/mediator/chatroom/User.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.mediator.chatroom; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class User { 7 | private String name; 8 | private ChatRoom chatRoom; 9 | 10 | public User(String name, ChatRoom chatRoom) { 11 | this.name = name; 12 | this.chatRoom = chatRoom; 13 | } 14 | 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public void sendMessage(String msg){ 20 | this.chatRoom.showMsg(this,msg); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-lawofdemeter/src/main/java/com/gupaoedu/vip/design/principle/demeter/Employee.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.demeter; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom on 2020/2/16. 8 | */ 9 | public class Employee { 10 | 11 | public void checkNumberOfCourses(){ 12 | List courseList = new ArrayList(); 13 | for (int i = 0; i < 20; i ++){ 14 | courseList.add(new Course()); 15 | } 16 | System.out.println("目前已发布的课程数量为:" + courseList.size()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/interfaceadapter/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.interfaceadapter; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class Client { 8 | public static void main(String[] args) { 9 | ITarget adapter = new Adapter(new Adaptee()) { 10 | @Override 11 | public int request1() { 12 | return adaptee.specificRequest() / 10; 13 | } 14 | }; 15 | int result = adapter.request1(); 16 | System.out.println(result); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/message/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.message; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | IMessage message = new SmsMessage(); 9 | AbastractMessage abastractMessage = new NomalMessage(message); 10 | abastractMessage.sendMessage("加班申请","王总"); 11 | 12 | message = new EmailMessage(); 13 | abastractMessage = new UrgencyMessage(message); 14 | abastractMessage.sendMessage("加班申请","王总"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-memento/src/main/java/com/gupaoedu/vip/pattern/memento/editor/DraftsBox.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.memento.editor; 2 | 3 | import java.util.Stack; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class DraftsBox { 9 | private final Stack STACK = new Stack(); 10 | 11 | public ArticleMemento getMemento(){ 12 | ArticleMemento articleMemento = STACK.pop(); 13 | return articleMemento; 14 | } 15 | 16 | public void addMemento(ArticleMemento articleMemento){ 17 | STACK.push(articleMemento); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dbroute/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dbroute; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class OrderService implements IOrderService { 7 | private OrderDao orderDao; 8 | 9 | public OrderService(){ 10 | //如果使用Spring应该是自动注入的 11 | //我们为了使用方便,在构造方法中将orderDao直接初始化了 12 | orderDao = new OrderDao(); 13 | } 14 | 15 | public int createOrder(Order order) { 16 | System.out.println("OrderService调用orderDao创建订单"); 17 | return orderDao.insert(order); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/guava/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.guava; 2 | 3 | import com.google.common.eventbus.EventBus; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class Test { 9 | 10 | public static void main(String[] args) { 11 | EventBus eventBus = new EventBus(); 12 | 13 | 14 | PojoEvent guavaEvent = new PojoEvent(); 15 | VoEvent voEvent = new VoEvent(); 16 | eventBus.register(guavaEvent); 17 | eventBus.register(voEvent); 18 | 19 | eventBus.post(new Pojo("Tom")); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dynamicproxy/gpproxy/client/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dynamicproxy.gpproxy.client; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public class Test { 8 | public static void main(String[] args) { 9 | GpMeipo gpMeipo = new GpMeipo(); 10 | IPerson zhangsan = gpMeipo.getInstance(new Zhangsan()); 11 | zhangsan.findLove(); 12 | 13 | 14 | // IPerson zhaoliu = jdkMeipo.getInstance(new ZhaoLiu()); 15 | // zhaoliu.findLove(); 16 | // zhaoliu.buyInsure(); 17 | 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-template/src/main/java/com/gupaoedu/vip/pattern/template/course/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.template.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | System.out.println("=========架构师课程========="); 9 | JavaCourse java = new JavaCourse(); 10 | java.setNeedCheckHomework(false); 11 | java.createCourse(); 12 | 13 | 14 | System.out.println("=========Python课程========="); 15 | PythonCourse python = new PythonCourse(); 16 | python.createCourse(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/LoginForTelAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class LoginForTelAdapter extends AbstraceAdapter{ 9 | public boolean support(Object adapter) { 10 | return adapter instanceof LoginForTelAdapter; 11 | } 12 | 13 | public ResultMsg login(String id, Object adapter) { 14 | return super.loginForRegist(id,null); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/interfaced/CourseImpl.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.interfaced; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class CourseImpl implements ICourseInfo,ICourseManager { 7 | public String getCourseName() { 8 | return null; 9 | } 10 | 11 | public byte[] getCourseVideo() { 12 | return new byte[0]; 13 | } 14 | 15 | public void studyCourse() { 16 | 17 | } 18 | 19 | public void refundCourse() { 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-prototype/src/main/java/com/gupaoedu/vip/pattern/prototype/singleton/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.prototype.singleton; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class Client { 10 | 11 | 12 | public static void main(String[] args) { 13 | //创建原型对象 14 | ConcretePrototype prototype = ConcretePrototype.getInstance(); 15 | 16 | //拷贝原型对象 17 | ConcretePrototype cloneType = prototype.clone(); 18 | 19 | System.out.println("原型对象和克隆对象比较:" + (prototype == cloneType)); 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/LoginForWechatAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class LoginForWechatAdapter extends AbstraceAdapter{ 9 | public boolean support(Object adapter) { 10 | return adapter instanceof LoginForWechatAdapter; 11 | } 12 | 13 | public ResultMsg login(String id, Object adapter) { 14 | return super.loginForRegist(id,null); 15 | } 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/Square.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Square implements QuadRangle { 7 | private long length; 8 | 9 | public long getLength() { 10 | return length; 11 | } 12 | 13 | public void setLength(long length) { 14 | this.length = length; 15 | } 16 | 17 | public long getWidth() { 18 | return length; 19 | } 20 | 21 | public long getHeight() { 22 | return length; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-objectpool/src/main/java/com/gupaoedu/vip/pattern/objectpool/pool/Client.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.objectpool.pool; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Client { 7 | 8 | public static void main(String[] args) { 9 | ObjectPoolFactory poolFactory = ObjectPoolFactory.getInstance(); 10 | Attributes paraObj = new Attributes(2, 1); 11 | ObjectPool pool = poolFactory.createPool(paraObj, StringBuffer.class); 12 | StringBuffer buffer = (StringBuffer) pool.getObject(); 13 | buffer.append("Tom"); 14 | System.out.println(buffer.toString()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/EggDecorator.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class EggDecorator extends BattercakeDecorator { 7 | public EggDecorator(Battercake battercake) { 8 | super(battercake); 9 | } 10 | 11 | public void doSomething() { 12 | 13 | } 14 | 15 | @Override 16 | protected String getMsg() { 17 | return super.getMsg() + "1个鸡蛋"; 18 | } 19 | 20 | @Override 21 | protected int getPrice() { 22 | return super.getPrice() + 1; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/adcalc/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.adcalc; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | // System.out.println("result: " + new GPCalculator("10 + 30").calculate()); 9 | // System.out.println("result: " + new GPCalculator("10 + 30 - 20").calculate()); 10 | // System.out.println("result: " + new GPCalculator("100 * (2 + 400) * 2 + 66").calculate()); 11 | 12 | System.out.println("result: " + new GPCalculator("10+30/((6-4)*2-2)").calculate()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/test/java/com/gupaoedu/vip/pattern/singleton/test/ContainerSingletonTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.test; 2 | 3 | import com.gupaoedu.vip.pattern.singleton.register.ContainerSingleton; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class ContainerSingletonTest { 9 | public static void main(String[] args) { 10 | Object instance1 = ContainerSingleton.getInstance("com.gupaoedu.vip.pattern.singleton.test.Pojo"); 11 | Object instance2 = ContainerSingleton.getInstance("com.gupaoedu.vip.pattern.singleton.test.Pojo"); 12 | System.out.println(instance1 == instance2); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/gper/Question.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Question { 7 | private String userName; 8 | private String content; 9 | 10 | public String getUserName() { 11 | return userName; 12 | } 13 | 14 | public void setUserName(String userName) { 15 | this.userName = userName; 16 | } 17 | 18 | public String getContent() { 19 | return content; 20 | } 21 | 22 | public void setContent(String content) { 23 | this.content = content; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/SausageDecorator.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class SausageDecorator extends BattercakeDecorator { 7 | public SausageDecorator(Battercake battercake) { 8 | super(battercake); 9 | } 10 | 11 | public void doSomething() { 12 | 13 | } 14 | 15 | @Override 16 | protected String getMsg() { 17 | return super.getMsg() + "1根香肠"; 18 | } 19 | 20 | @Override 21 | protected int getPrice() { 22 | return super.getPrice() + 2; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-template/src/main/java/com/gupaoedu/vip/pattern/template/course/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.template.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class JavaCourse extends AbastractCourse { 7 | private boolean needCheckHomework = false; 8 | 9 | public void setNeedCheckHomework(boolean needCheckHomework) { 10 | this.needCheckHomework = needCheckHomework; 11 | } 12 | 13 | @Override 14 | protected boolean needCheckHomework() { 15 | return this.needCheckHomework; 16 | } 17 | 18 | protected void checkHomework() { 19 | System.out.println("检查Java作业"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/lazy/LazySimpleSingletion.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.lazy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | 7 | /** 8 | * 优点:节省了内存,线程安全 9 | * 缺点:性能低 10 | */ 11 | //懒汉式单例模式在外部需要使用的时候才进行实例化 12 | public class LazySimpleSingletion { 13 | //静态块,公共内存区域 14 | private static LazySimpleSingletion instance; 15 | 16 | private LazySimpleSingletion(){} 17 | 18 | public synchronized static LazySimpleSingletion getInstance(){ 19 | if(instance == null){ 20 | instance = new LazySimpleSingletion(); 21 | } 22 | return instance; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | 8 | public static void main(String[] args) { 9 | 10 | Battercake battercake; 11 | 12 | battercake = new BaseBattercake(); 13 | 14 | battercake = new EggDecorator(battercake); 15 | 16 | battercake = new EggDecorator(battercake); 17 | 18 | battercake = new SausageDecorator(battercake); 19 | 20 | System.out.println(battercake.getMsg() + ",总价:" + battercake.getPrice()); 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/dispatch/staticdispatch/Main.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.dispatch.staticdispatch; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Main { 7 | public void test(String string){ 8 | System.out.println("string" + string); 9 | } 10 | public void test(Integer integer){ 11 | System.out.println("integer" + integer); 12 | } 13 | 14 | public static void main(String[] args) { 15 | String string = "1"; 16 | Integer integer = 1; 17 | Main main = new Main(); 18 | main.test(integer); 19 | main.test(string); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/ticket/TrainTicket.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.ticket; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class TrainTicket implements ITicket { 9 | private String from; 10 | private String to; 11 | private int price; 12 | 13 | public TrainTicket(String from, String to) { 14 | this.from = from; 15 | this.to = to; 16 | } 17 | 18 | public void showInfo(String bunk) { 19 | this.price = new Random().nextInt(500); 20 | System.out.println(from + "->" + to + ":" + bunk + "价格:" + this.price); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/simple/Rectangle.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution.simple; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Rectangle { 7 | private long height; 8 | private long width; 9 | 10 | public long getHeight() { 11 | return height; 12 | } 13 | 14 | public void setHeight(long height) { 15 | this.height = height; 16 | } 17 | 18 | public long getWidth() { 19 | return width; 20 | } 21 | 22 | public void setWidth(long width) { 23 | this.width = width; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/power/objectadapter/PowerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.power.objectadapter; 2 | 3 | 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class PowerAdapter implements DC5 { 9 | private AC220 ac220; 10 | 11 | public PowerAdapter(AC220 ac220) { 12 | this.ac220 = ac220; 13 | } 14 | 15 | public int output5V() { 16 | int adapterInput = ac220.outputAC220V(); 17 | int adapterOutput = adapterInput / 44; 18 | System.out.println("使用Adapter输入AC" + adapterInput + "V,输出DC" + adapterOutput + "V"); 19 | return adapterOutput; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v2/BattercakeDecorator.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v2; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public abstract class BattercakeDecorator extends Battercake { 7 | 8 | private Battercake battercake; 9 | 10 | public BattercakeDecorator(Battercake battercake) { 11 | this.battercake = battercake; 12 | } 13 | 14 | public abstract void doSomething(); 15 | 16 | protected String getMsg() { 17 | return this.battercake.getMsg(); 18 | } 19 | 20 | protected int getPrice() { 21 | return this.battercake.getPrice(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-prototype/src/main/java/com/gupaoedu/vip/pattern/prototype/singleton/ConcretePrototype.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.prototype.singleton; 2 | 3 | 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by Tom. 10 | */ 11 | @Data 12 | public class ConcretePrototype implements Cloneable { 13 | 14 | private static ConcretePrototype instance = new ConcretePrototype(); 15 | 16 | private ConcretePrototype(){} 17 | 18 | public static ConcretePrototype getInstance(){ 19 | return instance; 20 | } 21 | 22 | @Override 23 | public ConcretePrototype clone() { 24 | return instance; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/gper/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | GPer gper = GPer.getInstance(); 9 | Teacher tom = new Teacher("Tom"); 10 | Teacher jerry = new Teacher("Jerry"); 11 | 12 | gper.addObserver(tom); 13 | gper.addObserver(jerry); 14 | 15 | //用户行为 16 | Question question = new Question(); 17 | question.setUserName("张三"); 18 | question.setContent("观察者模式适用于哪些场景?"); 19 | 20 | gper.publishQuestion(question); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-liskovsubstitution/src/main/java/com/gupaoedu/vip/design/principle/liskovsutiution/Rectangle.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.liskovsutiution; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Rectangle implements QuadRangle { 7 | private long height; 8 | private long width; 9 | 10 | public long getHeight() { 11 | return height; 12 | } 13 | 14 | public void setHeight(long height) { 15 | this.height = height; 16 | } 17 | 18 | public long getWidth() { 19 | return width; 20 | } 21 | 22 | public void setWidth(long width) { 23 | this.width = width; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/factorys/CourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.factorys; 2 | 3 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.INote; 4 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.IVideo; 5 | 6 | /** 7 | * 抽象工厂是用户的主入口 8 | * 在Spring中应用得最为广泛的一种设计模式 9 | * 易于扩展 10 | * Created by Tom. 11 | */ 12 | public abstract class CourseFactory { 13 | 14 | public void init(){ 15 | System.out.println("初始化基础数据"); 16 | } 17 | 18 | protected abstract INote createNote(); 19 | 20 | protected abstract IVideo createVideo(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/general/interfaceadapter/Adapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.general.interfaceadapter; 2 | 3 | 4 | /** 5 | * Created by Tom. 6 | */ 7 | public abstract class Adapter implements ITarget { 8 | 9 | protected Adaptee adaptee; 10 | public Adapter(Adaptee adaptee){ 11 | this.adaptee = adaptee; 12 | } 13 | 14 | public int request1() { 15 | return 0; 16 | } 17 | 18 | public int request2() { 19 | return 0; 20 | } 21 | 22 | public int request3() { 23 | return 0; 24 | } 25 | 26 | public int request4() { 27 | return 0; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-bridge/src/main/java/com/gupaoedu/vip/pattern/bridge/course/AbstractCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.bridge.course; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class AbstractCourse implements ICourse { 7 | private INote note; 8 | private IVideo video; 9 | 10 | public void setNote(INote note) { 11 | this.note = note; 12 | } 13 | 14 | public void setVideo(IVideo video) { 15 | this.video = video; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "AbstractCourse{" + 21 | "note=" + note + 22 | ", video=" + video + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/builderchain/MemberService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.builderchain; 2 | 3 | 4 | import com.gupaoedu.vip.pattern.chain.auth.Member; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class MemberService { 10 | 11 | public void login(String loginName,String loginPass){ 12 | 13 | Handler.Builder builder = new Handler.Builder(); 14 | 15 | builder.addHandler(new ValidateHandler()) 16 | .addHandler(new LoginHandler()) 17 | .addHandler(new AuthHandler()); 18 | 19 | builder.build().doHandler(new Member(loginName,loginPass)); 20 | 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/LoginForTokenAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.PassportService; 4 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class LoginForTokenAdapter extends AbstraceAdapter { 10 | public boolean support(Object adapter) { 11 | return adapter instanceof LoginForTokenAdapter; 12 | } 13 | 14 | public ResultMsg login(String id, Object adapter) { 15 | return super.loginForRegist(id,null); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/gper/UnLoginState.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.gper; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class UnLoginState extends UserState { 7 | 8 | @Override 9 | public void favorite() { 10 | this.switch2login(); 11 | this.context.getState().favorite(); 12 | } 13 | 14 | @Override 15 | public void comment(String comment) { 16 | this.switch2login(); 17 | this.context.getState().comment(comment); 18 | } 19 | 20 | private void switch2login(){ 21 | System.out.println("跳转到登录页!"); 22 | this.context.setState(this.context.STATE_LOGIN); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/payport/Payment.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay.payport; 2 | 3 | import com.gupaoedu.vip.pattern.strategy.pay.MsgResult; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public abstract class Payment { 9 | 10 | public abstract String getName(); 11 | 12 | //通用逻辑放到抽象类里面实现 13 | public MsgResult pay(String uid, double amount){ 14 | //余额是否足够 15 | if(queryBalance(uid) < amount){ 16 | return new MsgResult(500,"支付失败","余额不足"); 17 | } 18 | return new MsgResult(200,"支付成功","支付金额" + amount); 19 | } 20 | 21 | protected abstract double queryBalance(String uid); 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/ValidateHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | import org.apache.commons.lang.StringUtils; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class ValidateHandler extends Handler { 10 | public void doHandler(Member member) { 11 | if(StringUtils.isEmpty(member.getLoginName()) || 12 | StringUtils.isEmpty(member.getLoginPass())){ 13 | System.out.println("用户名和密码为空"); 14 | return; 15 | } 16 | System.out.println("用户名和密码不为空,可以往下执行"); 17 | next.doHandler(member); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/builderchain/ValidateHandler.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.builderchain; 2 | 3 | import com.gupaoedu.vip.pattern.chain.auth.Member; 4 | import org.apache.commons.lang.StringUtils; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class ValidateHandler extends Handler { 10 | public void doHandler(Member member) { 11 | if(StringUtils.isEmpty(member.getLoginName()) || 12 | StringUtils.isEmpty(member.getLoginPass())){ 13 | System.out.println("用户名和密码为空"); 14 | return; 15 | } 16 | System.out.println("用户名和密码不为空,可以往下执行"); 17 | next.doHandler(member); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-state/src/main/java/com/gupaoedu/vip/pattern/state/order/Order.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.state.order; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Order { 7 | private int id; 8 | private OrderStatus status; 9 | public void setStatus(OrderStatus status) { 10 | this.status = status; 11 | } 12 | 13 | public OrderStatus getStatus() { 14 | return status; 15 | } 16 | 17 | public void setId(int id) { 18 | this.id = id; 19 | } 20 | 21 | public int getId() { 22 | return id; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "订单号:" + id + ", 订单状态:" + status; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/pay/MsgResult.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.pay; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class MsgResult { 7 | private int code; 8 | private Object data; 9 | private String msg; 10 | 11 | public MsgResult(int code, String msg, Object data) { 12 | this.code = code; 13 | this.data = data; 14 | this.msg = msg; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return "MsgResult{" + 20 | "code=" + code + 21 | ", data=" + data + 22 | ", msg='" + msg + '\'' + 23 | '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/simple/CourseBuilder.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.simple; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class CourseBuilder { 7 | 8 | private Course course = new Course(); 9 | 10 | public void addName(String name){ course.setName(name);} 11 | 12 | public void addPpt(String ppt){ course.setPpt(ppt);} 13 | 14 | public void addVideo(String video){ course.setVideo(video);} 15 | 16 | public void addNote(String note){ course.setNote(note);} 17 | 18 | public void addHomework(String homework){ course.setHomework(homework);} 19 | 20 | public Course builder(){ 21 | return course; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-command/src/main/java/com/gupaoedu/vip/pattern/command/player/Controller.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.command.player; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class Controller { 10 | private List actions = new ArrayList(); 11 | 12 | public void addAction(IAction action){ 13 | actions.add(action); 14 | } 15 | 16 | public void execute(IAction action){ 17 | action.execute(); 18 | } 19 | 20 | public void executes(){ 21 | for (IAction action:actions) { 22 | action.execute(); 23 | } 24 | actions.clear(); 25 | } 26 | 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/PassportService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class PassportService { 7 | 8 | /** 9 | * 注册方法 10 | * @param username 11 | * @param password 12 | * @return 13 | */ 14 | public ResultMsg regist(String username,String password){ 15 | return new ResultMsg(200,"注册成功",new Member()); 16 | } 17 | 18 | /** 19 | * 登录的方法 20 | * @param username 21 | * @param password 22 | * @return 23 | */ 24 | public ResultMsg login(String username,String password){ 25 | return null; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-openclose/src/main/java/com/gupaoedu/vip/design/principle/openclose/OpenCloseTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.openclose; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class OpenCloseTest { 7 | 8 | public static void main(String[] args) { 9 | ICourse iCourse = new JavaDiscountCourse(1,"Java架构",11800D); 10 | JavaDiscountCourse discountCourse = (JavaDiscountCourse)iCourse; 11 | System.out.println("课程ID:" + discountCourse.getId() + 12 | "\n课程标题:《" + discountCourse.getName() + "》" + 13 | "\n原价:" + discountCourse.getPrice() + 14 | "\n售价:" + discountCourse.getDiscountPrice()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-strategy/src/main/java/com/gupaoedu/vip/pattern/strategy/promotion/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.strategy.promotion; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Test { 7 | public static void main(String[] args) { 8 | String promotion = ""; 9 | // IPromotionStrategy strategy = null; 10 | 11 | // PromotionActivity activity = new PromotionActivity(new GroupbuyStrategy()); 12 | // activity.execute(); 13 | PromotionStrategyFacory.getPromotionKeys(); 14 | String promotionKey = "COUPON"; 15 | 16 | IPromotionStrategy promotionStrategy = PromotionStrategyFacory.getPromotionStrategy(promotionKey); 17 | promotionStrategy.doPromotion(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-interpreter/src/main/java/com/gupaoedu/vip/pattern/interpreter/calculate/SpringTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.interpreter.calculate; 2 | 3 | import org.springframework.expression.Expression; 4 | import org.springframework.expression.ExpressionParser; 5 | import org.springframework.expression.spel.standard.SpelExpressionParser; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class SpringTest { 11 | public static void main(String[] args) { 12 | ExpressionParser parser = new SpelExpressionParser(); 13 | Expression expression = parser.parseExpression("100 * 2 + 400 * 1 + 66"); 14 | Integer result = (Integer) expression.getValue(); 15 | System.out.println("计算结果是:" + result); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-servant/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-servant 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.slf4j 14 | slf4j-log4j12 15 | 1.7.2 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/AbstraceAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.PassportService; 4 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public abstract class AbstraceAdapter extends PassportService implements ILoginAdapter { 10 | protected ResultMsg loginForRegist(String username, String password){ 11 | if(null == password){ 12 | password = "THIRD_EMPTY"; 13 | } 14 | super.regist(username,password); 15 | return super.login(username,password); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/mouseevent/handler/MouseEventType.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.mouseevent.handler; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public interface MouseEventType { 7 | //单击 8 | String ON_CLICK = "click"; 9 | 10 | //双击 11 | String ON_DOUBLE_CLICK = "doubleClick"; 12 | 13 | //弹起 14 | String ON_UP = "up"; 15 | 16 | //按下 17 | String ON_DOWN = "down"; 18 | 19 | //移动 20 | String ON_MOVE = "move"; 21 | 22 | //滚动 23 | String ON_WHEEL = "wheel"; 24 | 25 | //悬停 26 | String ON_OVER = "over"; 27 | 28 | //失焦 29 | String ON_BLUR = "blur"; 30 | 31 | //获焦 32 | String ON_FOCUS = "focus"; 33 | } 34 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-objectpool/src/main/java/com/gupaoedu/vip/pattern/objectpool/pool/Attributes.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.objectpool.pool; 2 | 3 | public class Attributes { 4 | private int minCount; 5 | private int maxCount; 6 | public Attributes(int maxCount, int minCount) { 7 | this.maxCount = maxCount; 8 | this.minCount = minCount; 9 | } 10 | 11 | public int getMinCount() { 12 | return minCount; 13 | } 14 | 15 | public void setMinCount(int minCount) { 16 | this.minCount = minCount; 17 | } 18 | 19 | public int getMaxCount() { 20 | return maxCount; 21 | } 22 | 23 | public void setMaxCount(int maxCount) { 24 | this.maxCount = maxCount; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-specification/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-specification 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.slf4j 14 | slf4j-log4j12 15 | 1.7.2 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/threadlocal/ThreadLocalSingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.threadlocal; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class ThreadLocalSingleton { 7 | private static final ThreadLocal threadLocaLInstance = 8 | new ThreadLocal(){ 9 | @Override 10 | protected ThreadLocalSingleton initialValue() { 11 | return new ThreadLocalSingleton(); 12 | } 13 | }; 14 | 15 | private ThreadLocalSingleton(){} 16 | 17 | public static ThreadLocalSingleton getInstance(){ 18 | return threadLocaLInstance.get(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-nullobject/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-nullobject 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.slf4j 14 | slf4j-log4j12 15 | 1.7.2 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-objectpool/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-objectpool 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.slf4j 14 | slf4j-log4j12 15 | 1.7.2 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-memento/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-memento 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.springframework.webflow 14 | spring-webflow 15 | 2.4.5.RELEASE 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.gupaoedu.vip.pattern 8 | gupaoedu-vip-pattern-visitor 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | org.springframework 15 | spring-beans 16 | 5.0.2.RELEASE 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /gupaoedu-vip-new-pattern/gupaoedu-vip-pattern-objectpool/src/main/java/com/gupaoedu/vip/pattern/objectpool/pool/ObjectPoolFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.objectpool.pool; 2 | 3 | public class ObjectPoolFactory { 4 | 5 | // 饿汉式单例类 6 | private static final ObjectPoolFactory factory = new ObjectPoolFactory(); 7 | 8 | // 私有默认的构造子 9 | private ObjectPoolFactory() { 10 | } 11 | 12 | // 静态工厂方法 13 | public static ObjectPoolFactory getInstance() { 14 | return factory; 15 | } 16 | 17 | /** 18 | * @param paraObj  对象池参数对象 19 | * @param classType   所创建对象类型 20 | * @return   对象池 21 | */ 22 | public ObjectPool createPool(Attributes paraObj, Class classType) { 23 | return new ObjectPool(paraObj, classType); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/java/com/gupaoedu/vip/pattern/delegate/simple/Leader.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.delegate.simple; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class Leader implements IEmployee { 10 | 11 | private Map employee = new HashMap(); 12 | 13 | public Leader(){ 14 | employee.put("爬虫",new EmployeeA()); 15 | employee.put("海报图",new EmployeeB()); 16 | } 17 | 18 | public void doing(String task) { 19 | if(!employee.containsKey(task)){ 20 | System.out.println("这个任务" +task + "超出我的能力范围"); 21 | return; 22 | } 23 | employee.get(task).doing(task); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/chain/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.chain; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | @Data 9 | public class Course { 10 | private String name; 11 | private String ppt; 12 | private String video; 13 | private String note; 14 | 15 | private String homework; 16 | 17 | @Override 18 | public String toString() { 19 | return "Course{" + 20 | "name='" + name + '\'' + 21 | ", ppt='" + ppt + '\'' + 22 | ", video='" + video + '\'' + 23 | ", note='" + note + '\'' + 24 | ", homework='" + homework + '\'' + 25 | '}'; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/simple/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.simple; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | @Data 9 | public class Course { 10 | private String name; 11 | private String ppt; 12 | private String video; 13 | private String note; 14 | 15 | private String homework; 16 | 17 | @Override 18 | public String toString() { 19 | return "Course{" + 20 | "name='" + name + '\'' + 21 | ", ppt='" + ppt + '\'' + 22 | ", video='" + video + '\'' + 23 | ", note='" + note + '\'' + 24 | ", homework='" + homework + '\'' + 25 | '}'; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/gper/GPer.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.gper; 2 | 3 | import java.util.Observable; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class GPer extends Observable { 9 | private String name = "GPer生态圈"; 10 | private static final GPer gper = new GPer(); 11 | 12 | private GPer() {} 13 | 14 | public static GPer getInstance(){ 15 | return gper; 16 | } 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | public void publishQuestion(Question question){ 23 | System.out.println(question.getUserName() + "在" + this.name + "上提交了一个问题。"); 24 | setChanged(); 25 | notifyObservers(question); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-openclose/src/main/java/com/gupaoedu/vip/design/principle/openclose/JavaCourse.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.openclose; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class JavaCourse implements ICourse{ 7 | private Integer id; 8 | private String name; 9 | private Double price; 10 | 11 | public JavaCourse(Integer id, String name, Double price) { 12 | this.id = id; 13 | this.name = name; 14 | this.price = price; 15 | } 16 | 17 | public Integer getId() { 18 | return this.id; 19 | } 20 | 21 | public String getName() { 22 | return this.name; 23 | } 24 | 25 | public Double getPrice() { 26 | return this.price; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-chain/src/main/java/com/gupaoedu/vip/pattern/chain/auth/optimiaze/MemberService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.chain.auth.optimiaze; 2 | 3 | 4 | import com.gupaoedu.vip.pattern.chain.auth.Member; 5 | import org.apache.commons.lang.StringUtils; 6 | 7 | /** 8 | * Created by Tom. 9 | */ 10 | public class MemberService { 11 | 12 | public void login(String loginName,String loginPass){ 13 | Handler validateHandler = new ValidateHandler(); 14 | Handler loginHandler = new LoginHandler(); 15 | Handler authHandler = new AuthHandler(); 16 | 17 | validateHandler.next(loginHandler); 18 | loginHandler.next(authHandler); 19 | 20 | validateHandler.doHandler(new Member(loginName,loginPass)); 21 | 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-facade/src/main/java/com/gupaoedu/vip/pattern/facade/points/GiftFacadeService.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.facade.points; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class GiftFacadeService { 7 | private QualifyService qualifyService = new QualifyService(); 8 | private PaymentService paymentService = new PaymentService(); 9 | private ShippingService shippingService = new ShippingService(); 10 | 11 | public void exchange(GiftInfo giftInfo){ 12 | if(qualifyService.isAvailable(giftInfo)){ 13 | if(paymentService.pay(giftInfo)){ 14 | String shippingNo = shippingService.delivery(giftInfo); 15 | System.out.println("物流系统下单成功,物流单号是:" +shippingNo); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-iterator/src/main/java/com/gupaoedu/vip/pattern/iterator/course/CourseAggregateImpl.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.iterator.course; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class CourseAggregateImpl implements ICourseAggregate { 10 | private List courseList; 11 | 12 | public CourseAggregateImpl() { 13 | this.courseList = new ArrayList(); 14 | } 15 | 16 | public void add(Course course) { 17 | courseList.add(course); 18 | } 19 | 20 | public void remove(Course course) { 21 | courseList.remove(course); 22 | } 23 | 24 | public Iterator iterator() { 25 | return new IteratorImpl(courseList); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-adapter/src/main/java/com/gupaoedu/vip/pattern/adapter/demo/passport/adapterv2/adapters/LoginForQQAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.adapter.demo.passport.adapterv2.adapters; 2 | 3 | import com.gupaoedu.vip.pattern.adapter.demo.passport.PassportService; 4 | import com.gupaoedu.vip.pattern.adapter.demo.passport.ResultMsg; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class LoginForQQAdapter extends AbstraceAdapter{ 10 | public boolean support(Object adapter) { 11 | return adapter instanceof LoginForQQAdapter; 12 | } 13 | 14 | public ResultMsg login(String id, Object adapter) { 15 | if(!support(adapter)){return null;} 16 | //accesseToken 17 | //time 18 | return super.loginForRegist(id,null); 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-prototype/src/main/java/com/gupaoedu/vip/pattern/prototype/demo/BeanUtils.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.prototype.demo; 2 | 3 | import java.lang.reflect.Field; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class BeanUtils { 9 | 10 | public static Object copy(Object protorype) { 11 | Class clazz = protorype.getClass(); 12 | Object returnValue = null; 13 | try { 14 | returnValue = clazz.newInstance(); 15 | for (Field field : clazz.getDeclaredFields()) { 16 | field.setAccessible(true); 17 | field.set(returnValue, field.get(protorype)); 18 | } 19 | }catch (Exception e){ 20 | e.printStackTrace(); 21 | } 22 | return returnValue; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/seriable/SeriableSingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.seriable; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | 9 | public class SeriableSingleton implements Serializable { 10 | 11 | 12 | //序列化 13 | //把内存中对象的状态转换为字节码的形式 14 | //把字节码通过IO输出流,写到磁盘上 15 | //永久保存下来,持久化 16 | 17 | //反序列化 18 | //将持久化的字节码内容,通过IO输入流读到内存中来 19 | //转化成一个Java对象 20 | 21 | 22 | public final static SeriableSingleton INSTANCE = new SeriableSingleton(); 23 | private SeriableSingleton(){} 24 | 25 | public static SeriableSingleton getInstance(){ 26 | return INSTANCE; 27 | } 28 | 29 | private Object readResolve(){ return INSTANCE;} 30 | 31 | } 32 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/test/java/com/gupaoedu/vip/pattern/singleton/test/ThreadLocalSingletonTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.test; 2 | 3 | import com.gupaoedu.vip.pattern.singleton.threadlocal.ThreadLocalSingleton; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class ThreadLocalSingletonTest { 9 | 10 | public static void main(String[] args) { 11 | System.out.println(ThreadLocalSingleton.getInstance()); 12 | System.out.println(ThreadLocalSingleton.getInstance()); 13 | System.out.println(ThreadLocalSingleton.getInstance()); 14 | 15 | Thread t1 = new Thread(new ExectorThread()); 16 | Thread t2 = new Thread(new ExectorThread()); 17 | t1.start(); 18 | t2.start(); 19 | System.out.println("End"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dbroute/db/DynamicDataSourceEntity.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dbroute.db; 2 | 3 | /** 4 | * Created by Tom on 2019/3/10. 5 | */ 6 | public class DynamicDataSourceEntity { 7 | 8 | public final static String DEFAULE_SOURCE = null; 9 | 10 | private final static ThreadLocal local = new ThreadLocal(); 11 | 12 | private DynamicDataSourceEntity(){} 13 | 14 | 15 | public static String get(){return local.get();} 16 | 17 | public static void restore(){ 18 | local.set(DEFAULE_SOURCE); 19 | } 20 | 21 | //DB_2018 22 | //DB_2019 23 | public static void set(String source){local.set(source);} 24 | 25 | public static void set(int year){local.set("DB_" + year);} 26 | 27 | } 28 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-builder/src/main/java/com/gupaoedu/vip/pattern/builder/sql/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.builder.sql; 2 | 3 | import javax.management.Query; 4 | import java.util.Arrays; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class Test { 10 | public static void main(String[] args) { 11 | 12 | QueryRule queryRule = QueryRule.getInstance(); 13 | queryRule.addAscOrder("age") 14 | .andEqual("addr","Changsha") 15 | .andLike("name","Tom") 16 | .andGreaterEqual("age",18); 17 | 18 | QueryRuleSqlBuilder builder = new QueryRuleSqlBuilder(queryRule); 19 | 20 | System.out.println(builder.builder("t_member")); 21 | 22 | System.out.println("Params: " + Arrays.toString(builder.getValues())); 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-iterator/src/main/java/com/gupaoedu/vip/pattern/iterator/course/IteratorImpl.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.iterator.course; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Tom. 7 | */ 8 | public class IteratorImpl implements Iterator { 9 | private List list; 10 | private int cursor; 11 | private E element; 12 | 13 | public IteratorImpl(List list) { 14 | this.list = list; 15 | } 16 | 17 | public E next() { 18 | System.out.print("当前位置 " + cursor + " : "); 19 | element = list.get(cursor); 20 | cursor ++; 21 | return element; 22 | } 23 | 24 | public boolean hasNext() { 25 | if(cursor > list.size() - 1){ 26 | return false; 27 | } 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-composite/src/main/java/com/gupaoedu/vip/pattern/composite/demo/transparent/Course.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.composite.demo.transparent; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Course extends CourseComponet { 7 | 8 | private String name; 9 | private double price; 10 | 11 | public Course(String name, double price) { 12 | this.name = name; 13 | this.price = price; 14 | } 15 | 16 | @Override 17 | public String getName(CourseComponet componet) { 18 | return this.name; 19 | } 20 | 21 | @Override 22 | public double getPrice(CourseComponet componet) { 23 | return this.price; 24 | } 25 | 26 | @Override 27 | public void print() { 28 | System.out.println(name + "(¥" + price + "元)"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-decorator/src/main/java/com/gupaoedu/vip/pattern/decorator/battercake/v1/BattercakeTest.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.decorator.battercake.v1; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class BattercakeTest { 7 | 8 | public static void main(String[] args) { 9 | Battercake battercake = new Battercake(); 10 | System.out.println(battercake.getMsg() + ",总价:" + battercake.getPrice()); 11 | 12 | BattercakeWithEgg battercakeWithEgg = new BattercakeWithEgg(); 13 | System.out.println(battercakeWithEgg.getMsg() + ",总价:" + battercakeWithEgg.getPrice()); 14 | 15 | BattercakeWithEggAndSauage battercakeWithEggAndSauage = new BattercakeWithEggAndSauage(); 16 | System.out.println(battercakeWithEggAndSauage.getMsg() + ",总价:" + battercakeWithEggAndSauage.getPrice()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/factorys/JavaCourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.factorys; 2 | 3 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.INote; 4 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.IVideo; 5 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.JavaNote; 6 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.JavaVideo; 7 | 8 | /** 9 | * Created by Tom. 10 | */ 11 | public class JavaCourseFactory extends CourseFactory { 12 | 13 | public INote createNote() { 14 | super.init(); 15 | return new JavaNote(); 16 | } 17 | 18 | public IVideo createVideo() { 19 | super.init(); 20 | return new JavaVideo(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-flyweight/src/main/java/com/gupaoedu/vip/pattern/flyweight/ticket/TicketFacotry.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.flyweight.ticket; 2 | 3 | import java.util.Map; 4 | import java.util.concurrent.ConcurrentHashMap; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class TicketFacotry { 10 | 11 | private static Map pool = new ConcurrentHashMap(); 12 | 13 | public static ITicket queryTicket(String from,String to){ 14 | String key = from + "->" + to; 15 | if(pool.containsKey(key)){ 16 | System.out.println("使用缓存" + key); 17 | return pool.get(key); 18 | } 19 | System.out.println("首次查询,创建对象:" + key); 20 | ITicket ticket = new TrainTicket(from,to); 21 | pool.put(key,ticket); 22 | return ticket; 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /gupaoedu-vip-design-principle/gupaoedu-vip-design-principle-simpleresponsibility/src/main/java/com/gupaoedu/vip/design/principle/simpleresponsibility/method/Method.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.design.principle.simpleresponsibility.method; 2 | 3 | /** 4 | * Created by Tom on 2020/2/16. 5 | */ 6 | public class Method { 7 | 8 | private void modifyUserInfo(String userName,String address){ 9 | userName = "Tom"; 10 | address = "Changsha"; 11 | } 12 | 13 | private void modifyUserInfo(String userName,String ... fileds){ 14 | 15 | } 16 | 17 | private void modifyUserInfo(String userName,String address,boolean bool){ 18 | if(bool){ 19 | 20 | }else{ 21 | 22 | } 23 | } 24 | 25 | private void modifyUserName(String userName){ 26 | 27 | } 28 | 29 | private void modifyAddress(String address){ 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-visitor/src/main/java/com/gupaoedu/vip/pattern/visitor/kpi/BusinessReport.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.visitor.kpi; 2 | 3 | import java.util.LinkedList; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class BusinessReport { 10 | private List employees = new LinkedList(); 11 | 12 | public BusinessReport() { 13 | employees.add(new Manager("产品经理A")); 14 | employees.add(new Engineer("程序员A")); 15 | employees.add(new Engineer("程序员B")); 16 | employees.add(new Engineer("程序员C")); 17 | employees.add(new Manager("产品经理B")); 18 | employees.add(new Engineer("程序员D")); 19 | } 20 | 21 | public void showReport(IVisitor visitor){ 22 | for (Employee employee : employees) { 23 | employee.accept(visitor); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-abstractfactory/src/main/java/com/gupaoedu/vip/pattern/factory/abstractfactory/course/factorys/PythonCourseFactory.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.factory.abstractfactory.course.factorys; 2 | 3 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.INote; 4 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.IVideo; 5 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.PythonNote; 6 | import com.gupaoedu.vip.pattern.factory.abstractfactory.course.products.PythonVideo; 7 | 8 | /** 9 | * Created by Tom. 10 | */ 11 | public class PythonCourseFactory extends CourseFactory { 12 | 13 | public INote createNote() { 14 | super.init(); 15 | return new PythonNote(); 16 | } 17 | 18 | 19 | public IVideo createVideo() { 20 | super.init(); 21 | return new PythonVideo(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-proxy/src/main/java/com/gupaoedu/vip/pattern/proxy/dbroute/Order.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.proxy.dbroute; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | public class Order { 7 | private Object orderInfo; 8 | //订单创建时间进行按年分库 9 | private Long createTime; 10 | private String id; 11 | 12 | public Object getOrderInfo() { 13 | return orderInfo; 14 | } 15 | 16 | public void setOrderInfo(Object orderInfo) { 17 | this.orderInfo = orderInfo; 18 | } 19 | 20 | public Long getCreateTime() { 21 | return createTime; 22 | } 23 | 24 | public void setCreateTime(Long createTime) { 25 | this.createTime = createTime; 26 | } 27 | 28 | public String getId() { 29 | return id; 30 | } 31 | 32 | public void setId(String id) { 33 | this.id = id; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/gper/Teacher.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.gper; 2 | 3 | import java.util.Observable; 4 | import java.util.Observer; 5 | 6 | /** 7 | * Created by Tom. 8 | */ 9 | public class Teacher implements Observer { 10 | 11 | private String name; 12 | 13 | public Teacher(String name) { 14 | this.name = name; 15 | } 16 | 17 | public void update(Observable o, Object arg) { 18 | GPer gper = (GPer)o; 19 | Question question = (Question)arg; 20 | System.out.println("======================"); 21 | System.out.println(name + "老师,你好!\n" + 22 | "您收到了一个来自" + gper.getName() + "的提问,希望您解答。问题内容如下:\n" + 23 | question.getContent() + "\n" + 24 | "提问者:" + question.getUserName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-observer/src/main/java/com/gupaoedu/vip/pattern/observer/mouseevent/Test.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.observer.mouseevent; 2 | 3 | import com.gupaoedu.vip.pattern.observer.mouseevent.core.EventListener; 4 | import com.gupaoedu.vip.pattern.observer.mouseevent.handler.Mouse; 5 | import com.gupaoedu.vip.pattern.observer.mouseevent.handler.MouseEventListener; 6 | import com.gupaoedu.vip.pattern.observer.mouseevent.handler.MouseEventType; 7 | 8 | /** 9 | * Created by Tom. 10 | */ 11 | public class Test { 12 | public static void main(String[] args) { 13 | EventListener listener = new MouseEventListener(); 14 | 15 | Mouse mouse = new Mouse(); 16 | mouse.addListener(MouseEventType.ON_CLICK,listener); 17 | mouse.addListener(MouseEventType.ON_MOVE,listener); 18 | 19 | mouse.click(); 20 | mouse.move(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-singleton/src/main/java/com/gupaoedu/vip/pattern/singleton/lazy/LazyDoubleCheckSingleton.java: -------------------------------------------------------------------------------- 1 | package com.gupaoedu.vip.pattern.singleton.lazy; 2 | 3 | /** 4 | * Created by Tom. 5 | */ 6 | 7 | /** 8 | * 优点:性能高了,线程安全了 9 | * 缺点:可读性难度加大,不够优雅 10 | */ 11 | public class LazyDoubleCheckSingleton { 12 | private volatile static LazyDoubleCheckSingleton instance; 13 | private LazyDoubleCheckSingleton(){} 14 | 15 | public static LazyDoubleCheckSingleton getInstance(){ 16 | //检查是否要阻塞 17 | if (instance == null) { 18 | synchronized (LazyDoubleCheckSingleton.class) { 19 | //检查是否要重新创建实例 20 | if (instance == null) { 21 | instance = new LazyDoubleCheckSingleton(); 22 | //指令重排序的问题 23 | } 24 | } 25 | } 26 | return instance; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /gupaoedu-vip-pattern/gupaoedu-vip-pattern-delegate/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | Gupao Web Application 8 | 9 | 10 | 11 | delegateServlet 12 | com.gupaoedu.vip.pattern.delegate.mvc.DispatcherServlet 13 | 1 14 | 15 | 16 | 17 | delegateServlet 18 | /* 19 | 20 | 21 | 22 | 23 | 24 | --------------------------------------------------------------------------------