├── .gitignore ├── README.md ├── pom.xml └── src └── dp └── com └── company ├── adapter ├── README.md ├── adapter.jpg ├── ext │ └── Main.java ├── java-io-adapter.png ├── section1 │ ├── App.java │ ├── IOuterUser.java │ ├── IUserInfo.java │ ├── OuterUser.java │ ├── OuterUserInfo.java │ └── UserInfo.java ├── section2 │ ├── Adaptee.java │ ├── Adapter.java │ ├── Client.java │ ├── ConcreteTarget.java │ ├── Target.java │ └── adapter.ucls └── section3 │ ├── Client.java │ ├── IOuterUserBaseInfo.java │ ├── IOuterUserHomeInfo.java │ ├── IOuterUserOfficeInfo.java │ ├── IUserInfo.java │ ├── OuterUserBaseInfo.java │ ├── OuterUserHomeInfo.java │ ├── OuterUserInfo.java │ ├── OuterUserOfficeInfo.java │ └── UserInfo.java ├── bridge ├── README.md ├── bridge.jpg ├── section1 │ ├── Client.java │ ├── ClothesCorp.java │ ├── Corp.java │ └── HouseCorp.java ├── section2 │ ├── Client.java │ ├── Corp.java │ ├── HouseCorp.java │ └── IPodCorp.java ├── section3 │ ├── Client.java │ ├── Corp.java │ ├── House.java │ ├── HouseCorp.java │ ├── IPod.java │ ├── Product.java │ └── ShanZhaiCorp.java ├── section4 │ ├── Client.java │ ├── Clothes.java │ ├── Corp.java │ ├── House.java │ ├── HouseCorp.java │ ├── Product.java │ └── ShanZhaiCorp.java └── section5 │ ├── Abstraction.java │ ├── Client.java │ ├── ConcreteImplementor1.java │ ├── ConcreteImplementor2.java │ ├── Implementor.java │ ├── RefinedAbstraction.java │ └── bridge.ucls ├── builder ├── README.md ├── builder.jpg ├── section1 │ ├── BMWModel.java │ ├── BenzModel.java │ ├── CarModel.java │ └── Client.java ├── section2 │ ├── BMWBuilder.java │ ├── BMWModel.java │ ├── BenzBuilder.java │ ├── BenzModel.java │ ├── CarBuilder.java │ ├── CarModel.java │ └── Client.java ├── section3 │ ├── BMWBuilder.java │ ├── BMWModel.java │ ├── BenzBuilder.java │ ├── BenzModel.java │ ├── CarBuilder.java │ ├── CarModel.java │ ├── Client.java │ └── Director.java └── section4 │ ├── Builder.java │ ├── ConcreteProduct.java │ ├── Director.java │ ├── Product.java │ └── builder.ucls ├── chain_of_responsibility ├── README.md ├── chainofresponsibility.jpg ├── example │ ├── Client.java │ ├── DM.java │ ├── Handler.java │ ├── PM.java │ ├── Request.java │ ├── Response.java │ └── VP.java ├── section1 │ ├── Client.java │ ├── Father.java │ ├── Husband.java │ ├── IHandler.java │ ├── IWomen.java │ ├── Son.java │ └── Women.java ├── section2 │ ├── Client.java │ ├── Father.java │ ├── Handler.java │ ├── Husband.java │ ├── IWomen.java │ ├── Son.java │ ├── WomanType.java │ └── Women.java └── section3 │ ├── Client.java │ ├── ConcreteHandler1.java │ ├── ConcreteHandler2.java │ ├── ConcreteHandler3.java │ ├── Handler.java │ ├── Level.java │ ├── Request.java │ ├── Response.java │ └── chainofresponsibility.ucls ├── command ├── README.md ├── command.jpg ├── section1 │ ├── Client.java │ ├── CodeGroup.java │ ├── Group.java │ ├── PageGroup.java │ └── RequirementGroup.java ├── section2 │ ├── AddRequirementCommand.java │ ├── Client.java │ ├── CodeGroup.java │ ├── Command.java │ ├── DeletePageCommand.java │ ├── Group.java │ ├── Invoker.java │ ├── PageGroup.java │ └── RequirementGroup.java ├── section3 │ ├── Client.java │ ├── Command.java │ ├── ConcreteCommand.java │ ├── Invoker.java │ └── Receiver.java └── section4 │ ├── Client.java │ ├── Command.java │ ├── ConcreteCommand1.java │ ├── ConcreteCommand2.java │ ├── ConcreteReciver1.java │ ├── ConcreteReciver2.java │ ├── Invoker.java │ ├── Receiver.java │ └── command.ucls ├── command_chain ├── ClassUtils.java ├── Client.java ├── CommandEnum.java ├── CommandVO.java ├── Invoker.java ├── command │ ├── Command.java │ ├── DFCommand.java │ └── LSCommand.java └── command_name │ ├── CommandName.java │ ├── df │ ├── AbstractDF.java │ ├── DF.java │ ├── DF_G.java │ └── DF_K.java │ ├── ls │ ├── AbstractLS.java │ ├── LS.java │ ├── LS_A.java │ └── LS_L.java │ └── os │ ├── DiskManager.java │ └── FileManager.java ├── composite ├── README.md ├── composite.jpg ├── section1 │ ├── Branch.java │ ├── Client.java │ ├── IBranch.java │ ├── ILeaf.java │ ├── IRoot.java │ ├── Leaf.java │ └── Root.java ├── section2 │ ├── Branch.java │ ├── Client.java │ ├── IBranch.java │ ├── ICorp.java │ ├── ILeaf.java │ └── Leaf.java ├── section3 │ ├── Branch.java │ ├── Client.java │ ├── Corp.java │ └── Leaf.java ├── section4 │ ├── Client.java │ ├── Component.java │ ├── Composite.java │ ├── Leaf.java │ └── composite.ucls ├── section5 │ ├── Client.java │ ├── Component.java │ ├── Composite.java │ └── Leaf.java ├── section6 │ ├── Branch.java │ ├── Client.java │ ├── Corp.java │ └── Leaf.java └── session7 │ ├── Area.java │ ├── Client.java │ ├── Component.java │ └── ConcreteComponent.java ├── decorator ├── README.md ├── decorator.jpg ├── section1 │ ├── Father.java │ ├── FouthGradeSchoolReport.java │ └── SchoolReport.java ├── section2 │ ├── Decorator.java │ ├── Father.java │ ├── FouthGradeSchoolReport.java │ ├── HighScoreDecorator.java │ ├── SchoolReport.java │ └── SortDecorator.java └── section3 │ ├── Client.java │ ├── Component.java │ ├── ConcreteComponent.java │ ├── ConcreteDecorator1.java │ ├── ConcreteDecorator2.java │ ├── Decorator.java │ └── decorator.ucls ├── dip ├── README.md ├── section1 │ ├── BMW.java │ ├── Benz.java │ ├── Client.java │ └── Driver.java ├── section2 │ ├── BMW.java │ ├── Benz.java │ ├── Client.java │ ├── Driver.java │ ├── ICar.java │ └── IDriver.java ├── section3 │ ├── Driver.java │ ├── ICar.java │ └── IDriver.java ├── section4 │ ├── BMW.java │ ├── Benz.java │ ├── Driver.java │ ├── ICar.java │ └── IDriver.java └── section5 │ ├── BMW.java │ ├── Benz.java │ ├── Driver.java │ ├── ICar.java │ └── IDriver.java ├── facade ├── README.md ├── facade.gif ├── section1 │ ├── Client.java │ ├── ILetterProcess.java │ └── LetterProcessImpl.java ├── section2 │ ├── Client.java │ ├── ILetterProcess.java │ ├── LetterProcessImpl.java │ └── ModenPostOffice.java ├── section3 │ ├── Client.java │ ├── ILetterProcess.java │ ├── LetterProcessImpl.java │ ├── ModenPostOffice.java │ └── Police.java ├── section4 │ ├── ClassA.java │ ├── ClassB.java │ ├── ClassC.java │ └── Facade.java ├── section5 │ ├── ClassA.java │ ├── ClassB.java │ ├── ClassC.java │ ├── Facade.java │ └── Facade2.java ├── section6 │ ├── ClassA.java │ ├── ClassB.java │ ├── ClassC.java │ └── Facade.java └── section7 │ ├── ClassA.java │ ├── ClassB.java │ ├── ClassC.java │ ├── Context.java │ ├── Facade.java │ └── facade.ucls ├── factory_strategy ├── Card.java ├── Client.java ├── DeductionContext.java ├── DeductionFacade.java ├── FreeDeduction.java ├── IDeduction.java ├── SteadyDeduction.java ├── StrategyFactory.java ├── StrategyMan.java └── Trade.java ├── factorya ├── README.md ├── factorya.jpg ├── section1 │ ├── AbstractBlackHuman.java │ ├── AbstractWhiteHuman.java │ ├── AbstractYellowHuman.java │ ├── FemaleBlackHuman.java │ ├── FemaleFactory.java │ ├── FemaleWhiteHuman.java │ ├── FemaleYellowHuman.java │ ├── Human.java │ ├── HumanFactory.java │ ├── MaleBlackHuman.java │ ├── MaleFactory.java │ ├── MaleWhiteHuman.java │ ├── MaleYellowHuman.java │ └── NvWa.java └── section2 │ ├── AbstractCreator.java │ ├── AbstractProductA.java │ ├── AbstractProductB.java │ ├── Client.java │ ├── Creator1.java │ ├── Creator2.java │ ├── ProductA1.java │ ├── ProductA2.java │ ├── ProductB1.java │ ├── ProductB2.java │ └── factorya.ucls ├── factorys ├── README.md ├── factorys.jpg ├── section1 │ ├── AbstractHumanFactory.java │ ├── BlackHuman.java │ ├── Human.java │ ├── HumanFactory.java │ ├── NvWa.java │ ├── WhiteHuman.java │ └── YellowHuman.java ├── section2 │ ├── Client.java │ ├── ConcreteCreator.java │ ├── ConcreteProduct1.java │ ├── ConcreteProduct2.java │ ├── Creator.java │ ├── Product.java │ └── factorys.ucls ├── section3 │ ├── BlackHuman.java │ ├── Human.java │ ├── HumanFactory.java │ ├── NvWa.java │ ├── WhiteHuman.java │ └── YellowHuman.java ├── section4 │ ├── AbstractHumanFactory.java │ ├── BlackHuman.java │ ├── BlackHumanFactory.java │ ├── ClassUtils.java │ ├── Human.java │ ├── HumanFactory.java │ ├── NvWa.java │ ├── WhiteHuman.java │ ├── WhiteHumanFactory.java │ ├── YellowHuman.java │ └── YellowHumanFactory.java ├── section5 │ ├── Client.java │ ├── Singleton.java │ └── SingletonFactory.java └── section6 │ ├── ConcreteProduct1.java │ ├── ConcreteProduct2.java │ ├── Factory.java │ └── Product.java ├── flyweight ├── README.md ├── flyweight.gif ├── section1 │ ├── Client.java │ ├── SignInfo.java │ └── SignInfoFactory.java ├── section2 │ ├── Client.java │ ├── SignInfo.java │ ├── SignInfo4Pool.java │ └── SignInfoFactory.java ├── section3 │ ├── ConcreteFlyweight1.java │ ├── ConcreteFlyweight2.java │ ├── Flyweight.java │ ├── FlyweightFactory.java │ └── flyweight.ucls ├── section4 │ ├── Client.java │ ├── MultiThread.java │ ├── SignInfo.java │ └── SignInfoFactory.java ├── section5 │ ├── Client.java │ ├── ExtrinsicState.java │ ├── SignInfo.java │ └── SignInfoFactory.java ├── section6 │ ├── Client.java │ ├── SignInfo.java │ ├── SignInfo4Pool.java │ └── SignInfoFactory.java └── section7 │ └── Test.java ├── interpreter ├── README.md ├── interpreter.jpg ├── section1 │ ├── AddExpression.java │ ├── Calculator.java │ ├── Client.java │ ├── Expression.java │ ├── SubExpression.java │ ├── SymbolExpression.java │ └── VarExpression.java └── section2 │ ├── Client.java │ ├── Context.java │ ├── Expression.java │ ├── NonterminalExpression.java │ ├── TerminalExpression.java │ └── interpreter.ucls ├── isp ├── README.md ├── section1 │ ├── AbstractSearcher.java │ ├── Client.java │ ├── IPettyGirl.java │ ├── PettyGirl.java │ └── Searcher.java └── section2 │ ├── AbstractSearcher.java │ ├── Client.java │ ├── IGoodBodyGirl.java │ ├── IGreatTemperamentGirl.java │ ├── PettyGirl.java │ └── Searcher.java ├── iterator ├── README.md ├── iterator.jpg ├── section1 │ ├── Boss.java │ ├── IProject.java │ └── Project.java ├── section2 │ ├── Boss.java │ ├── IProject.java │ ├── IProjectIterator.java │ ├── Project.java │ └── ProjectIterator.java └── section3 │ ├── Aggregate.java │ ├── Client.java │ ├── ConcreteAggregate.java │ ├── ConcreteIterator.java │ ├── Iterator.java │ └── iterator.ucls ├── lod ├── README.md ├── section1 │ ├── Client.java │ ├── Girl.java │ ├── GroupLeader.java │ └── Teacher.java ├── section2 │ ├── Client.java │ ├── Girl.java │ ├── GroupLeader.java │ └── Teacher.java ├── section3 │ ├── Client.java │ ├── InstallSoftware.java │ └── Wizard.java └── section4 │ ├── Client.java │ ├── InstallSoftware.java │ └── Wizard.java ├── lsp ├── README.md ├── section1 │ ├── AbstractGun.java │ ├── Client.java │ ├── Handgun.java │ ├── MachineGun.java │ ├── Rifle.java │ └── Soldier.java ├── section2 │ ├── AbstractGun.java │ ├── Client.java │ ├── Handgun.java │ ├── MachineGun.java │ ├── Rifle.java │ ├── Soldier.java │ └── ToyGun.java ├── section3 │ ├── AUG.java │ ├── AbstractGun.java │ ├── Client.java │ ├── G3.java │ ├── Handgun.java │ ├── MachineGun.java │ ├── Rifle.java │ ├── Snipper.java │ ├── Soldier.java │ └── ToyGun.java ├── section4 │ ├── Client.java │ ├── Father.java │ └── Son.java ├── section5 │ ├── Client.java │ ├── Father.java │ └── Son.java └── section6 │ ├── Client.java │ ├── Father.java │ └── Son.java ├── mediator ├── README.md ├── mediator.jpg ├── section1 │ ├── Client.java │ ├── Purchase.java │ ├── Sale.java │ └── Stock.java ├── section2 │ ├── AbstractColleague.java │ ├── AbstractMediator.java │ ├── Client.java │ ├── Mediator.java │ ├── Purchase.java │ ├── Sale.java │ └── Stock.java └── section3 │ ├── Colleague.java │ ├── ConcreteColleague1.java │ ├── ConcreteColleague2.java │ ├── ConcreteMediator.java │ ├── Mediator.java │ └── mediator.ucls ├── memento ├── README.md ├── example │ ├── Caretaker.java │ ├── Client.java │ ├── GameNode.java │ └── Memento.java ├── memento.jpg ├── section1 │ ├── Boy.java │ └── Client.java ├── section2 │ ├── Boy.java │ ├── Client.java │ └── Memento.java ├── section4 │ ├── Caretaker.java │ ├── Client.java │ ├── Memento.java │ └── Originator.java ├── section5 │ ├── Caretaker.java │ └── Originator.java ├── section6 │ ├── Client.java │ └── Originator.java ├── section7 │ ├── BeanUtils.java │ ├── Caretaker.java │ ├── Client.java │ ├── Memento.java │ └── Originator.java ├── section8 │ ├── Caretaker.java │ ├── Client.java │ ├── Memento.java │ └── Originator.java └── section9 │ ├── Caretaker.java │ ├── Client.java │ ├── IMemento.java │ ├── Originator.java │ └── memento.ucls ├── mvc ├── action │ ├── AbstractInterceptor.java │ ├── ActionDispather.java │ ├── ActionManager.java │ ├── ActionSupport.java │ ├── IActionDispather.java │ ├── InterceptorConfig.java │ ├── InterceptorFactory.java │ └── Interceptors.java ├── controller │ └── FilterDispather.java ├── helper │ ├── ActionNode.java │ ├── Checker.java │ ├── CommonXmlValidate.java │ ├── FileWatcher.java │ ├── IXmlValidate.java │ ├── LogicXmlValidate.java │ ├── ParamMapping.java │ ├── ValueStackHelper.java │ ├── ViewPathVisitor.java │ ├── Watchable.java │ ├── XmlActionNode.java │ └── XmlHelper.java ├── valuestack │ └── ValueStack.java └── view │ ├── AbsLangData.java │ ├── AbsView.java │ ├── ENLangData.java │ ├── GBLangData.java │ ├── JspView.java │ ├── SwfView.java │ └── ViewManager.java ├── observer ├── README.md ├── example │ ├── Client.java │ ├── Merchant1Observer.java │ ├── Observer.java │ ├── SltoSaleCeaseSubject.java │ └── Subject.java ├── observer.jpg ├── section1 │ ├── Client.java │ ├── HanFeiZi.java │ ├── IHanFeiZi.java │ ├── ILiSi.java │ ├── LiSi.java │ └── Spy.java ├── section2 │ ├── Client.java │ ├── HanFeiZi.java │ ├── IHanFeiZi.java │ ├── ILiSi.java │ └── LiSi.java ├── section3 │ ├── Client.java │ ├── HanFeiZi.java │ ├── IHanFeiZi.java │ ├── LiSi.java │ ├── LiuSi.java │ ├── Observable.java │ ├── Observer.java │ └── WangSi.java ├── section4 │ ├── Client.java │ ├── ConcreteObserver.java │ ├── ConcreteSubject.java │ ├── Observer.java │ ├── Subject.java │ └── observer.ucls └── section5 │ ├── Client.java │ ├── HanFeiZi.java │ ├── LiSi.java │ ├── LiuSi.java │ └── WangSi.java ├── observer_mediator ├── section1 │ ├── Client.java │ ├── Product.java │ └── ProductManager.java ├── section2 │ ├── EventDispatch.java │ ├── Product.java │ ├── ProductEvent.java │ ├── ProductEventType.java │ └── ProductManager.java ├── section3 │ ├── Beggar.java │ ├── Commoner.java │ ├── EventCustomType.java │ ├── EventCustomer.java │ ├── EventDispatch.java │ ├── Nobleman.java │ ├── Product.java │ ├── ProductEvent.java │ ├── ProductEventType.java │ └── ProductManager.java └── section4 │ ├── Beggar.java │ ├── Client.java │ ├── Commoner.java │ ├── EventCustomType.java │ ├── EventCustomer.java │ ├── EventDispatch.java │ ├── Nobleman.java │ ├── Product.java │ ├── ProductEvent.java │ ├── ProductEventType.java │ └── ProductManager.java ├── ocp ├── README.md ├── section1 │ ├── BookStore.java │ ├── IBook.java │ └── NovelBook.java ├── section2 │ ├── BookStore.java │ ├── IBook.java │ ├── NovelBook.java │ └── OffNovelBook.java ├── section3 │ ├── BookStore.java │ ├── IBook.java │ ├── NovelBook.java │ └── OffNovelBook.java ├── section4 │ ├── BookStore.java │ ├── ComputerBook.java │ ├── IBook.java │ ├── IComputerBook.java │ ├── NovelBook.java │ └── OffNovelBook.java ├── section5 │ ├── BookStore.java │ ├── ComputerBook.java │ ├── IBook.java │ ├── IComputerBook.java │ ├── NovelBook.java │ └── OffNovelBook.java └── section6 │ ├── AbstractOffRole.java │ ├── BookOffRole.java │ ├── BookStore.java │ ├── IBook.java │ ├── NovelBook.java │ └── config.xml ├── pkbehavior ├── README.md ├── command_vs_strategy │ ├── command │ │ ├── AbstractCmd.java │ │ ├── Client.java │ │ ├── CompressReceiver.java │ │ ├── GzipCompressCmd.java │ │ ├── GzipUncompressCmd.java │ │ ├── IReceiver.java │ │ ├── Invoker.java │ │ ├── UncompressReceiver.java │ │ ├── ZipCompressCmd.java │ │ └── ZipUncompressCmd.java │ └── strategy │ │ ├── Algorithm.java │ │ ├── Client.java │ │ ├── Context.java │ │ ├── Gzip.java │ │ └── Zip.java ├── observer_vs_chain │ ├── chain │ │ ├── ChinaTopDnsServer.java │ │ ├── Client.java │ │ ├── DnsServer.java │ │ ├── Recorder.java │ │ ├── SHDnsServer.java │ │ └── TopDnsServer.java │ └── observer │ │ ├── ChinaTopDnsServer.java │ │ ├── Client.java │ │ ├── DnsServer.java │ │ ├── Recorder.java │ │ ├── SHDnsServer.java │ │ └── TopDnsServer.java └── strategy_vs_state │ ├── state │ ├── AdultState.java │ ├── ChildState.java │ ├── Client.java │ ├── Human.java │ ├── HumanState.java │ └── OldState.java │ └── strategy │ ├── AdultWork.java │ ├── ChildWork.java │ ├── Client.java │ ├── Context.java │ ├── OldWork.java │ └── WorkAlgorithm.java ├── pkcreate ├── AbstractFactory_vs_Builder │ ├── abstract_factory │ │ ├── AbsBMW.java │ │ ├── AbsBenz.java │ │ ├── BMWFactory.java │ │ ├── BMWSuv.java │ │ ├── BMWVan.java │ │ ├── BenzFactory.java │ │ ├── BenzSuv.java │ │ ├── BenzVan.java │ │ ├── CarFactory.java │ │ ├── Client.java │ │ └── ICar.java │ └── builder │ │ ├── BMWBuilder.java │ │ ├── BenzBuilder.java │ │ ├── Blueprint.java │ │ ├── Car.java │ │ ├── CarBuilder.java │ │ ├── Client.java │ │ ├── Director.java │ │ └── ICar.java ├── README.md └── factory_vs_builder │ ├── builder │ ├── AdultSuperManBuilder.java │ ├── Builder.java │ ├── ChildSuperManBuilder.java │ ├── Client.java │ ├── Director.java │ └── SuperMan.java │ └── factory │ ├── AdultSuperMan.java │ ├── ChildSuperMan.java │ ├── Client.java │ ├── ISuperMan.java │ └── SuperManFactory.java ├── pkcross ├── command_vs_strategy │ ├── command │ │ ├── AbstractCmd.java │ │ ├── Client.java │ │ ├── CompressReceiver.java │ │ ├── GzipCompressCmd.java │ │ ├── GzipUncompressCmd.java │ │ ├── IReceiver.java │ │ ├── Invoker.java │ │ ├── UncompressReceiver.java │ │ ├── ZipCompressCmd.java │ │ └── ZipUncompressCmd.java │ └── strategy │ │ ├── Algorithm.java │ │ ├── Client.java │ │ ├── Context.java │ │ ├── Gzip.java │ │ └── Zip.java ├── strategy_vs_bridge │ ├── bridge │ │ ├── Client.java │ │ ├── HtmlMail.java │ │ ├── MailServer.java │ │ ├── MailTemplate.java │ │ ├── Postfix.java │ │ ├── SendMail.java │ │ └── TextMail.java │ └── strategy │ │ ├── Client.java │ │ ├── HtmlMail.java │ │ ├── MailServer.java │ │ ├── MailTemplate.java │ │ └── TextMail.java └── wrapper │ ├── adapter │ ├── FilmStar.java │ ├── IActor.java │ ├── IStar.java │ ├── Standin.java │ ├── UnknownActor.java │ └── direcotr.java │ ├── bridge │ ├── AbstractAction.java │ ├── AbstractStar.java │ ├── ActFilm.java │ ├── Client.java │ ├── FilmStar.java │ ├── Sing.java │ └── Singer.java │ ├── decorator │ ├── Client.java │ ├── Decorator.java │ ├── Deny.java │ ├── FreakStar.java │ ├── HotAir.java │ └── IStar.java │ └── proxy │ ├── Agent.java │ ├── IStar.java │ ├── Idolater.java │ └── Singer.java ├── pkstructure ├── README.md ├── decorator_vs_adapter │ ├── adapter │ │ ├── Client.java │ │ ├── Duck.java │ │ ├── Duckling.java │ │ ├── Swan.java │ │ ├── UglyDuckling.java │ │ └── WhiteSwan.java │ └── decorator │ │ ├── BeautifyAppearance.java │ │ ├── Client.java │ │ ├── Decorator.java │ │ ├── StrongBehavior.java │ │ ├── Swan.java │ │ └── UglyDuckling.java └── proxy_vs_decorator │ ├── decorator │ ├── Client.java │ ├── IRunner.java │ ├── Runner.java │ └── RunnerWithJet.java │ └── proxy │ ├── Client.java │ ├── IRunner.java │ ├── Runner.java │ └── RunnerAgent.java ├── prototype ├── README.md ├── prototype.gif ├── section1 │ ├── AdvTemplate.java │ ├── Client.java │ └── Mail.java ├── section2 │ ├── PrototypeClass.java │ └── prototype.ucls ├── section3 │ ├── Client.java │ └── Thing.java ├── section4 │ ├── Client.java │ └── Thing.java └── section5 │ ├── Client.java │ └── Thing.java ├── proxy ├── README.md ├── dynamic │ ├── section1 │ │ ├── Client.java │ │ ├── DynamicProxy.java │ │ ├── MyInvocationHandler.java │ │ ├── RealSubject.java │ │ ├── Subject.java │ │ └── dynamicProxy.ucls │ └── section2 │ │ ├── AfterAdvice.java │ │ ├── BeforeAdvice.java │ │ ├── Client.java │ │ ├── DynamicProxy.java │ │ ├── IAdvice.java │ │ ├── MyInvocationHandler.java │ │ ├── RealSubject.java │ │ ├── Subject.java │ │ └── SubjectDynamicProxy.java ├── dynamicproxy.jpg ├── proxy.jpg ├── section1 │ ├── Client.java │ ├── GamePlayer.java │ ├── IGamePlayer.java │ ├── KindWomen.java │ ├── PanJinLian.java │ └── XiMenQing.java ├── section10 │ ├── Client.java │ ├── DynamicProxy.java │ ├── GamePlayIH.java │ ├── GamePlayer.java │ └── IGamePlayer.java ├── section11 │ ├── Client.java │ ├── DynamicProxy.java │ ├── GamePlayer.java │ ├── IGamePlayer.java │ └── MyIvocationHandler.java ├── section2 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ └── IGamePlayer.java ├── section3 │ ├── Client.java │ ├── Proxy.java │ ├── RealSubject.java │ ├── Subject.java │ └── proxy.ucls ├── section4 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ └── IGamePlayer.java ├── section5 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ └── IGamePlayer.java ├── section6 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ └── IGamePlayer.java ├── section7 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ └── IGamePlayer.java ├── section8 │ ├── Client.java │ ├── GamePlayer.java │ ├── GamePlayerProxy.java │ ├── IGamePlayer.java │ └── IProxy.java └── section9 │ ├── Client.java │ ├── GamePlayIH.java │ ├── GamePlayer.java │ └── IGamePlayer.java ├── singleton ├── README.md ├── ext │ ├── Mgr01.java │ ├── Mgr02.java │ ├── Mgr03.java │ ├── Mgr04.java │ ├── Mgr05.java │ ├── Mgr06.java │ ├── Mgr07.java │ └── Mgr08.java ├── section1 │ ├── Emperor.java │ └── Minister.java ├── section2 │ ├── Emperor.java │ └── Minister.java ├── section3 │ └── Singleton.java ├── section4 │ └── Singleton.java └── singleton.gif ├── specification ├── section1 │ ├── Client.java │ ├── IUserProvider.java │ ├── User.java │ └── UserProvider.java ├── section2 │ └── IUserProvider.java ├── section3 │ ├── Client.java │ ├── IUserProvider.java │ ├── IUserSpecification.java │ ├── User.java │ ├── UserByAgeThan.java │ ├── UserByNameEqual.java │ └── UserProvider.java ├── section4 │ ├── Client.java │ ├── IUserProvider.java │ ├── IUserSpecification.java │ ├── User.java │ ├── UserByAgeThan.java │ ├── UserByNameEqual.java │ ├── UserByNameLike.java │ └── UserProvider.java ├── section5 │ ├── AndSpecification.java │ ├── Client.java │ ├── CompositeSpecification.java │ ├── IUserProvider.java │ ├── IUserSpecification.java │ ├── NotSpecification.java │ ├── OrSpecification.java │ ├── User.java │ ├── UserByAgeThan.java │ ├── UserByNameEqual.java │ ├── UserByNameLike.java │ └── UserProvider.java └── section6 │ ├── AndSpecification.java │ ├── BizSpecification.java │ ├── BizSpecification2.java │ ├── Client.java │ ├── CompositeSpecification.java │ ├── ISpecification.java │ ├── NotSpecification.java │ └── OrSpecification.java ├── srp ├── README.md ├── section1 │ ├── Client.java │ ├── IUserInfo.java │ └── UserInfo.java ├── section2 │ ├── Client.java │ ├── IUserBO.java │ ├── IUserBiz.java │ ├── IUserInfo.java │ └── UserInfo.java └── section3 │ └── IPhone.java ├── state ├── README.md ├── example │ ├── .emptyDir │ ├── Client.java │ ├── ClosingState.java │ ├── Context.java │ ├── LiftState.java │ ├── OpenningState.java │ ├── RunningState.java │ └── StoppingState.java ├── section1 │ ├── Client.java │ ├── ILift.java │ └── Lift.java ├── section2 │ ├── Client.java │ ├── ILift.java │ └── Lift.java ├── section4 │ ├── Client.java │ ├── ConcreteState1.java │ ├── ConcreteState2.java │ ├── Context.java │ ├── State.java │ └── state.ucls └── state.jpg ├── strategy ├── README.md ├── example │ ├── BackDoor.java │ ├── BlockEnemy.java │ ├── Context.java │ ├── GivenGreenLight.java │ ├── IStrategy.java │ └── ZhaoYun.java ├── section2 │ ├── Client.java │ ├── ConcreteStrategy1.java │ ├── ConcreteStrategy2.java │ ├── Context.java │ ├── Strategy.java │ └── strategy.ucls ├── section3 │ ├── Calculator.java │ └── Client.java ├── section4 │ ├── Calculator.java │ └── Client.java ├── section5 │ ├── Add.java │ ├── Calculator.java │ ├── Client.java │ ├── Context.java │ └── Sub.java ├── section6 │ ├── Calculator.java │ └── Client.java └── strategy.jpg ├── template_method ├── README.md ├── game │ ├── Client.java │ ├── GameModel.java │ ├── Pck3Model.java │ └── SltoModel.java ├── section1 │ ├── Client.java │ ├── HummerH1Model.java │ ├── HummerH2Model.java │ └── HummerModel.java ├── section2 │ ├── Client.java │ ├── HummerH1Model.java │ ├── HummerH2Model.java │ └── HummerModel.java ├── section3 │ ├── AbstractClass.java │ ├── Client.java │ ├── ConcreteClass1.java │ ├── ConcreteClass2.java │ └── template.ucls ├── section4 │ ├── Client.java │ ├── HummerH1Model.java │ ├── HummerH2Model.java │ └── HummerModel.java └── template.jpg └── visitor ├── README.md ├── section1 ├── Client.java ├── CommonEmployee.java ├── Employee.java └── Manager.java ├── section2 ├── Client.java ├── CommonEmployee.java ├── Employee.java ├── IVisitor.java ├── Manager.java └── Visitor.java ├── section3 ├── Client.java ├── ConcreteElement1.java ├── ConcreteElement2.java ├── Element.java ├── IVisitor.java ├── ObjectStruture.java ├── Visitor.java └── visitor.ucls ├── section4 ├── Client.java ├── CommonEmployee.java ├── Employee.java ├── IVisitor.java ├── Manager.java └── Visitor.java ├── section5 ├── Client.java ├── CommonEmployee.java ├── Employee.java ├── IShowVisitor.java ├── ITotalVisitor.java ├── IVisitor.java ├── Manager.java ├── ShowVisitor.java └── TotalVisitor.java ├── section6 ├── AbsActor.java ├── Client.java ├── IdiotRole.java ├── KungFuRole.java ├── OldActor.java ├── Role.java └── YoungActor.java ├── section7 ├── AbsActor.java ├── Client.java ├── IdiotRole.java ├── KungFuRole.java ├── OldActor.java ├── Role.java └── YoungActor.java └── visitor.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | # maven ignore 2 | target/ 3 | *.jar 4 | *.war 5 | *.zip 6 | *.tar 7 | *.tar.gz 8 | .flattened-pom.xml 9 | 10 | # eclipse ignore 11 | .settings/ 12 | .project 13 | .classpath 14 | 15 | # idea ignore 16 | .idea/ 17 | *.ipr 18 | *.iml 19 | *.iws 20 | 21 | # temp ignore 22 | *.log 23 | *.cache 24 | *.diff 25 | *.patch 26 | *.tmp 27 | 28 | # system ignore 29 | .DS_Store 30 | Thumbs.db 31 | *.orig 32 | 33 | # license check result 34 | license-list 35 | 36 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/adapter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/adapter/adapter.jpg -------------------------------------------------------------------------------- /src/dp/com/company/adapter/java-io-adapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/adapter/java-io-adapter.png -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section2/Adaptee.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 源角色 7 | */ 8 | public class Adaptee { 9 | 10 | // 原有的业务逻辑 11 | public void doSomething() { 12 | System.out.println("I'm kind of busy,leave me alone,pls!"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section2/Adapter.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 适配器 7 | */ 8 | public class Adapter extends Adaptee implements Target { 9 | 10 | public void request() { 11 | super.doSomething(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | // 原有的业务逻辑 11 | Target target = new ConcreteTarget(); 12 | target.request(); 13 | 14 | // 现在增加了适配器角色后的业务逻辑 15 | Target target2 = new Adapter(); 16 | target2.request(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section2/ConcreteTarget.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteTarget implements Target { 8 | 9 | public void request() { 10 | System.out.println("I have nothing to do. if you need any help,pls call me!"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section2/Target.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 目标角色 7 | */ 8 | public interface Target { 9 | 10 | // 目标角色有自己的方法 11 | public void request(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section3/IOuterUserBaseInfo.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section3; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com
7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public interface IOuterUserBaseInfo { 10 | // 基本信息,比如名称,性别,手机号码了等 11 | public Map getUserBaseInfo(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section3/IOuterUserHomeInfo.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section3; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com
7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public interface IOuterUserHomeInfo { 10 | // 用户的家庭信息 11 | public Map getUserHomeInfo(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/adapter/section3/IOuterUserOfficeInfo.java: -------------------------------------------------------------------------------- 1 | package com.company.adapter.section3; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com
7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public interface IOuterUserOfficeInfo { 10 | // 工作区域信息 11 | public Map getUserOfficeInfo(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/bridge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/bridge/bridge.jpg -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section3/House.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class House extends Product { 8 | // 豆腐渣就豆腐渣呗,好歹也是个房子 9 | public void beProducted() { 10 | System.out.println("生产出的房子是这个样子的..."); 11 | } 12 | 13 | // 虽然是豆腐渣,也是能够销售出去的 14 | public void beSelled() { 15 | System.out.println("生产出的房子卖出去了..."); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section3/HouseCorp.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class HouseCorp extends Corp { 8 | // 定义传递一个House产品进来 9 | public HouseCorp(House house) { 10 | super(house); 11 | } 12 | 13 | // 房地产公司很High了,赚钱,计算利润 14 | public void makeMoney() { 15 | super.makeMoney(); 16 | System.out.println("房地产公司赚大钱了..."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section3/IPod.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class IPod extends Product { 8 | 9 | public void beProducted() { 10 | System.out.println("生产出的iPod是这个样子的..."); 11 | } 12 | 13 | public void beSelled() { 14 | System.out.println("生产出的iPod卖出去了..."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section3/Product.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Product { 8 | // 甭管是什么产品它总要是能被生产出来 9 | public abstract void beProducted(); 10 | 11 | // 生产出来的东西,一定要销售出去,否则亏本呀 12 | public abstract void beSelled(); 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section3/ShanZhaiCorp.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ShanZhaiCorp extends Corp { 8 | // 产什么产品,不知道,等被调用的才知道 9 | public ShanZhaiCorp(Product product) { 10 | super(product); 11 | } 12 | 13 | // 狂赚钱 14 | public void makeMoney() { 15 | super.makeMoney(); 16 | System.out.println("我赚钱呀..."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section4/Clothes.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Clothes extends Product { 8 | 9 | public void beProducted() { 10 | System.out.println("生产出的衣服是这个样子的..."); 11 | } 12 | 13 | public void beSelled() { 14 | System.out.println("生产出的衣服卖出去了..."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section4/House.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class House extends Product { 8 | // 豆腐渣就豆腐渣呗,好歹也是个房子 9 | public void beProducted() { 10 | System.out.println("生产出的房子是这个样子的..."); 11 | } 12 | 13 | // 虽然是豆腐渣,也是能够销售出去的 14 | public void beSelled() { 15 | System.out.println("生产出的房子卖出去了..."); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section4/HouseCorp.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class HouseCorp extends Corp { 8 | // 定义传递一个House产品进来 9 | public HouseCorp(House house) { 10 | super(house); 11 | } 12 | 13 | // 房地产公司很High了,赚钱,计算利润 14 | public void makeMoney() { 15 | super.makeMoney(); 16 | System.out.println("房地产公司赚大钱了..."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section4/Product.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Product { 8 | // 甭管是什么产品它总要是能被生产出来 9 | public abstract void beProducted(); 10 | 11 | // 生产出来的东西,一定要销售出去,否则亏本呀 12 | public abstract void beSelled(); 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section4/ShanZhaiCorp.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ShanZhaiCorp extends Corp { 8 | // 产什么产品,不知道,等被调用的才知道 9 | public ShanZhaiCorp(Product product) { 10 | super(product); 11 | } 12 | 13 | // 狂赚钱 14 | public void makeMoney() { 15 | super.makeMoney(); 16 | System.out.println("我赚钱呀..."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section5/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | // 定义一个实现化角色 11 | Implementor imp = new ConcreteImplementor1(); 12 | // 定义一个抽象化角色 13 | Abstraction abs = new RefinedAbstraction(imp); 14 | // 执行行文 15 | abs.request(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section5/ConcreteImplementor1.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteImplementor1 implements Implementor { 8 | 9 | public void doSomething() { 10 | // 业务逻辑处理 11 | } 12 | 13 | public void doAnything() { 14 | // 业务逻辑处理 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section5/ConcreteImplementor2.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteImplementor2 implements Implementor { 8 | 9 | public void doSomething() { 10 | // 业务逻辑处理 11 | } 12 | 13 | public void doAnything() { 14 | // 业务逻辑处理 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/bridge/section5/Implementor.java: -------------------------------------------------------------------------------- 1 | package com.company.bridge.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Implementor { 8 | 9 | // 基本方法 10 | public void doSomething(); 11 | 12 | public void doAnything(); 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/builder/builder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/builder/builder.jpg -------------------------------------------------------------------------------- /src/dp/com/company/builder/section4/Builder.java: -------------------------------------------------------------------------------- 1 | package com.company.builder.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Builder { 8 | 9 | // 设置产品的不同部分,以获得不同的产品 10 | public abstract void setPart(); 11 | 12 | // 建造产品 13 | public abstract Product buildProduct(); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/builder/section4/Director.java: -------------------------------------------------------------------------------- 1 | package com.company.builder.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Director { 8 | private Builder builder = new ConcreteProduct(); 9 | 10 | // 构建不同的产品 11 | public Product getAProduct() { 12 | builder.setPart(); 13 | /* 14 | * 设置不同的零件,产生不同的产品 15 | */ 16 | return builder.buildProduct(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/builder/section4/Product.java: -------------------------------------------------------------------------------- 1 | package com.company.builder.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Product { 8 | 9 | public void doSomething() { 10 | // 独立业务处理 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/chainofresponsibility.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/chain_of_responsibility/chainofresponsibility.jpg -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/example/Request.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Request { 8 | private int level; 9 | 10 | public Request(int level) { 11 | this.level = level; 12 | } 13 | 14 | // 请求的等级 15 | public int getRequestLevel() { 16 | return level; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/example/Response.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Response { 8 | // 处理者返回的数据 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section1/Father.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 父亲 7 | */ 8 | public class Father implements IHandler { 9 | 10 | // 未出嫁女儿来请示父亲 11 | public void HandleMessage(IWomen women) { 12 | System.out.println("女儿的请示是:" + women.getRequest()); 13 | System.out.println("父亲的答复是:同意"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section1/Husband.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 丈夫类 7 | */ 8 | public class Husband implements IHandler { 9 | 10 | // 妻子向丈夫请示 11 | public void HandleMessage(IWomen women) { 12 | System.out.println("妻子的请示是:" + women.getRequest()); 13 | System.out.println("丈夫的答复是:同意"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section1/IHandler.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 父系社会,那就是男性有至高权利,handler控制权 7 | */ 8 | public interface IHandler { 9 | 10 | // 一个女性(女儿,妻子或者是母亲)要求逛街,你要处理这个请求 11 | public void HandleMessage(IWomen women); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section1/IWomen.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 古代悲哀女性的总称 7 | */ 8 | public interface IWomen { 9 | 10 | // 获得个人状况 11 | public int getType(); 12 | 13 | // 获得个人请示,你要干什么?出去逛街?约会?还是看电影 14 | public String getRequest(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section1/Son.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 儿子类 7 | */ 8 | public class Son implements IHandler { 9 | 10 | // 目前向儿子请示 11 | public void HandleMessage(IWomen women) { 12 | System.out.println("母亲的请示是:" + women.getRequest()); 13 | System.out.println("儿子的答复是:同意"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section2/IWomen.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all.
6 | * 古代悲哀女性的总称 7 | */ 8 | public interface IWomen { 9 | 10 | // 获得个人状况 11 | public int getType(); 12 | 13 | // 获得个人请示,你要干什么?出去逛街?约会?还是看电影 14 | public String getRequest(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section2/WomanType.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public enum WomanType { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section3/Level.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Level { 8 | // 定义一个请求和处理等级 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section3/Request.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Request { 8 | 9 | // 请求的等级 10 | public Level getRequestLevel() { 11 | return null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/chain_of_responsibility/section3/Response.java: -------------------------------------------------------------------------------- 1 | package com.company.chain_of_responsibility.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Response { 8 | // 处理者返回的数据 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/command/command.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/command/command.jpg -------------------------------------------------------------------------------- /src/dp/com/company/command/section3/Command.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Command { 8 | 9 | // 每个命令类都必须有一个执行命令的方法 10 | public abstract void execute(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section3/Invoker.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Invoker { 8 | private Command command; 9 | 10 | // 受气包,接受命令 11 | public void setCommand(Command _command) { 12 | this.command = _command; 13 | } 14 | 15 | // 执行命令 16 | public void action() { 17 | this.command.execute(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section3/Receiver.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Receiver { 8 | // 抽象接收者,定义每个接收者都必须完成的业务 9 | public abstract void doSomething(); 10 | } 11 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section4/Command.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Command { 8 | //定义一个子类的全局共享变量 9 | protected final Receiver receiver; 10 | //实现类必须定义一个接收者 11 | public Command(Receiver _receiver){ 12 | this.receiver = _receiver; 13 | } 14 | //每个命令类都必须有一个执行命令的方法 15 | public abstract void execute(); 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section4/ConcreteReciver1.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteReciver1 extends Receiver { 8 | 9 | // 每个接受者都必须处理一定的业务逻辑 10 | public void doSomething() { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section4/ConcreteReciver2.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteReciver2 extends Receiver { 8 | 9 | // 每个接受者都必须处理一定的业务逻辑 10 | public void doSomething() { 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section4/Invoker.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Invoker { 8 | private Command command; 9 | 10 | // 受气包,接受命令 11 | public void setCommand(Command _command) { 12 | this.command = _command; 13 | } 14 | 15 | // 执行命令 16 | public void action() { 17 | this.command.execute(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/command/section4/Receiver.java: -------------------------------------------------------------------------------- 1 | package com.company.command.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com
5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Receiver { 8 | // 抽象接收者,定义每个接收者都必须完成的业务 9 | public abstract void doSomething(); 10 | } 11 | -------------------------------------------------------------------------------- /src/dp/com/company/command_chain/command/DFCommand.java: -------------------------------------------------------------------------------- 1 | package com.company.command_chain.command; 2 | 3 | import com.company.command_chain.CommandVO; 4 | import com.company.command_chain.command_name.df.AbstractDF; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | */ 10 | public class DFCommand extends Command { 11 | 12 | public String execute(CommandVO vo) { 13 | return super.buildChain(AbstractDF.class).get(0).handleMessage(vo); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/composite.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/composite/composite.jpg -------------------------------------------------------------------------------- /src/dp/com/company/composite/section1/ILeaf.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 叶子节点,也就是最小的小兵了,只能自己干活,不能指派别人了 7 | */ 8 | public interface ILeaf { 9 | 10 | //获得自己的信息呀 11 | public String getInfo(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section2/ICorp.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 公司类,定义每个员工都有信息 7 | */ 8 | public interface ICorp { 9 | 10 | //每个员工都有信息,你想隐藏,门儿都没有! 11 | public String getInfo(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section2/ILeaf.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface ILeaf extends ICorp { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section3/Leaf.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 普通员工很简单,就写一个构造函数就可以了 7 | */ 8 | public class Leaf extends Corp { 9 | 10 | //就写一个构造函数,这个是必须的 11 | public Leaf(String _name,String _position,int _salary){ 12 | super(_name,_position,_salary); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section4/Component.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Component { 8 | 9 | //个体和整体都具有的共享 10 | public void doSomething(){ 11 | //编写业务逻辑 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section4/Leaf.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Leaf extends Component { 8 | /* 9 | * 可以覆写父类方法 10 | * public void doSomething(){ 11 | * 12 | * } 13 | */ 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/section6/Leaf.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 普通员工很简单,就写一个构造函数就可以了 7 | */ 8 | public class Leaf extends Corp { 9 | 10 | //就写一个构造函数,这个是必须的 11 | public Leaf(String _name,String _position,int _salary){ 12 | super(_name,_position,_salary); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/composite/session7/ConcreteComponent.java: -------------------------------------------------------------------------------- 1 | package com.company.composite.session7; 2 | 3 | /** 4 | * 具体组件类,相当于叶子 5 | */ 6 | public class ConcreteComponent extends Component { 7 | 8 | public ConcreteComponent(String name) { 9 | super(name); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/decorator/decorator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/decorator/decorator.jpg -------------------------------------------------------------------------------- /src/dp/com/company/decorator/section1/Father.java: -------------------------------------------------------------------------------- 1 | package com.company.decorator.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 老爸看成绩单了 7 | */ 8 | public class Father { 9 | 10 | public static void main(String[] args) { 11 | //成绩单拿过来 12 | SchoolReport sr = new FouthGradeSchoolReport(); 13 | //看成绩单 14 | sr.report(); 15 | //签名?休想! 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/dp/com/company/decorator/section1/SchoolReport.java: -------------------------------------------------------------------------------- 1 | package com.company.decorator.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 成绩单的抽象类 7 | */ 8 | public abstract class SchoolReport { 9 | 10 | //成绩单的主要展示的就是你的成绩情况 11 | public abstract void report(); 12 | 13 | //成绩单要家长签字,这个是最要命的 14 | public abstract void sign(String name); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/decorator/section2/SchoolReport.java: -------------------------------------------------------------------------------- 1 | package com.company.decorator.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 成绩单的抽象类 7 | */ 8 | public abstract class SchoolReport { 9 | 10 | //成绩单的主要展示的就是你的成绩情况 11 | public abstract void report(); 12 | 13 | //成绩单要家长签字,这个是最要命的 14 | public abstract void sign(String name); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/decorator/section3/Component.java: -------------------------------------------------------------------------------- 1 | package com.company.decorator.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Component { 8 | //抽象的方法 9 | public abstract void operate(); 10 | } 11 | -------------------------------------------------------------------------------- /src/dp/com/company/decorator/section3/ConcreteComponent.java: -------------------------------------------------------------------------------- 1 | package com.company.decorator.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteComponent extends Component { 8 | 9 | //具体实现 10 | @Override 11 | public void operate() { 12 | System.out.println("do Something"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/README.md: -------------------------------------------------------------------------------- 1 | # 依赖倒置原则(DIP:Dependence Inversion Principle) 2 | 定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。 3 | 4 | 依赖倒置原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。 5 | 6 | 依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合。在项目中使用,我们只要遵循以下几个规则就可以. 7 | 8 | 9 | ### 最佳实践 10 | * 每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备。 11 | * 变量的表名类型尽量是接口或者抽象类。 12 | * 任何类都不应该从具体类派生。 13 | * 尽量不要覆写基类的方法。 14 | * 结合里氏替换原则使用。 -------------------------------------------------------------------------------- /src/dp/com/company/dip/section1/BMW.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 宝马车 7 | */ 8 | public class BMW { 9 | 10 | //宝马车当然也可以开动了 11 | public void run(){ 12 | System.out.println("宝马汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section1/Benz.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 奔驰汽车 7 | */ 8 | public class Benz { 9 | 10 | //汽车肯定会跑 11 | public void run(){ 12 | System.out.println("奔驰汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景类 7 | */ 8 | public class Client { 9 | public static void main(String[] args) { 10 | Driver zhangSan = new Driver(); 11 | Benz benz = new Benz(); 12 | 13 | //张三开奔驰车 14 | zhangSan.drive(benz); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section1/Driver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机 7 | */ 8 | public class Driver { 9 | 10 | //司机的主要职责就是驾驶汽车 11 | public void drive(Benz benz){ 12 | benz.run(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/BMW.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 宝马车 7 | */ 8 | public class BMW implements ICar{ 9 | 10 | //宝马车当然也可以开动了 11 | public void run(){ 12 | System.out.println("宝马汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/Benz.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 奔驰汽车 7 | */ 8 | public class Benz implements ICar{ 9 | 10 | //汽车肯定会跑 11 | public void run(){ 12 | System.out.println("奔驰汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景类 7 | */ 8 | public class Client { 9 | public static void main(String[] args) { 10 | IDriver zhangSan = new Driver(); 11 | //ICar benz = new Benz(); 12 | ICar bmw = new BMW(); 13 | 14 | //张三开奔驰车 15 | zhangSan.drive(bmw); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/Driver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机 7 | */ 8 | public class Driver implements IDriver{ 9 | 10 | //司机的主要职责就是驾驶汽车 11 | public void drive(ICar car){ 12 | car.run(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 汽车接口 7 | */ 8 | public interface ICar { 9 | 10 | //是汽车就应该能跑 11 | public void run(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section2/IDriver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机的接口 7 | */ 8 | public interface IDriver { 9 | 10 | //是司机就应该会驾驶汽车 11 | public void drive(ICar car); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section3/Driver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机 7 | */ 8 | public class Driver implements IDriver{ 9 | 10 | //司机的主要职责就是驾驶汽车 11 | public void drive(ICar car){ 12 | car.run(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section3/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 汽车接口 7 | */ 8 | public interface ICar { 9 | 10 | //是汽车就应该能跑 11 | public void run(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section3/IDriver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机的接口 7 | */ 8 | public interface IDriver { 9 | 10 | //是司机就应该会驾驶汽车 11 | public void drive(ICar car); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section4/BMW.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 宝马车 7 | */ 8 | public class BMW implements ICar{ 9 | 10 | //宝马车当然也可以开动了 11 | public void run(){ 12 | System.out.println("宝马汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section4/Benz.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 奔驰汽车 7 | */ 8 | public class Benz implements ICar{ 9 | 10 | //汽车肯定会跑 11 | public void run(){ 12 | System.out.println("奔驰汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section4/Driver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机 7 | */ 8 | public class Driver implements IDriver{ 9 | private ICar car; 10 | 11 | //构造函数注入 12 | public Driver(ICar _car){ 13 | this.car = _car; 14 | } 15 | 16 | //司机的主要职责就是驾驶汽车 17 | public void drive(){ 18 | this.car.run(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section4/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 汽车接口 7 | */ 8 | public interface ICar { 9 | 10 | //是汽车就应该能跑 11 | public void run(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section4/IDriver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机的接口 7 | */ 8 | public interface IDriver { 9 | 10 | //是司机就应该会驾驶汽车 11 | public void drive(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section5/BMW.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 宝马车 7 | */ 8 | public class BMW implements ICar{ 9 | 10 | //宝马车当然也可以开动了 11 | public void run(){ 12 | System.out.println("宝马汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section5/Benz.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 奔驰汽车 7 | */ 8 | public class Benz implements ICar{ 9 | 10 | //汽车肯定会跑 11 | public void run(){ 12 | System.out.println("奔驰汽车开始运行..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section5/Driver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机 7 | */ 8 | public class Driver implements IDriver{ 9 | private ICar car; 10 | 11 | public void setCar(ICar car){ 12 | this.car = car; 13 | } 14 | 15 | //司机的主要职责就是驾驶汽车 16 | public void drive(){ 17 | this.car.run(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section5/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 汽车接口 7 | */ 8 | public interface ICar { 9 | 10 | //是汽车就应该能跑 11 | public void run(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/dip/section5/IDriver.java: -------------------------------------------------------------------------------- 1 | package com.company.dip.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 司机的接口 7 | */ 8 | public interface IDriver { 9 | 10 | //车辆型号 11 | public void setCar(ICar car); 12 | 13 | //是司机就应该会驾驶汽车 14 | public void drive(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/facade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/facade/facade.gif -------------------------------------------------------------------------------- /src/dp/com/company/facade/section1/ILetterProcess.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you 5 | * all. 6 | */ 7 | public interface ILetterProcess { 8 | // 首先要写信的内容 9 | public void writeContext(String context); 10 | 11 | // 其次写信封 12 | public void fillEnvelope(String address); 13 | 14 | // 把信放到信封里 15 | public void letterInotoEnvelope(); 16 | 17 | // 然后邮递 18 | public void sendLetter(); 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section2/ILetterProcess.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface ILetterProcess { 8 | //首先要写信的内容 9 | public void writeContext(String context); 10 | //其次写信封 11 | public void fillEnvelope(String address); 12 | //把信放到信封里 13 | public void letterInotoEnvelope(); 14 | //然后邮递 15 | public void sendLetter(); 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section3/ILetterProcess.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface ILetterProcess { 8 | //首先要写信的内容 9 | public void writeContext(String context); 10 | //其次写信封 11 | public void fillEnvelope(String address); 12 | //把信放到信封里 13 | public void letterInotoEnvelope(); 14 | //然后邮递 15 | public void sendLetter(); 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section3/Police.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 检查信件,比如是不是恐吓信,有没有炭疽病毒,寄往某地的邮件都要检查 7 | */ 8 | public class Police { 9 | 10 | //检查信件,检查完毕后警察在信封上盖个戳:此信无病毒 11 | public void checkLetter(ILetterProcess letterProcess){ 12 | System.out.println(letterProcess+" 信件已经检查过了....."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section4/ClassA.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassA { 8 | 9 | public void doSomethingA(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section4/ClassB.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassB { 8 | 9 | public void doSomethingB(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section4/ClassC.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassC { 8 | 9 | public void doSomethingC(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section5/ClassA.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassA { 8 | 9 | public void doSomethingA(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section5/ClassB.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassB { 8 | 9 | public void doSomethingB(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section5/ClassC.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassC { 8 | 9 | public void doSomethingC(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section5/Facade2.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Facade2 { 8 | //引用原有的门面 9 | private Facade facade = new Facade(); 10 | 11 | //对外提供唯一的访问子系统的方法 12 | public void methodB(){ 13 | this.facade.methodB(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section6/ClassA.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassA { 8 | 9 | public void doSomethingA(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section6/ClassB.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassB { 8 | 9 | public void doSomethingB(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section6/ClassC.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassC { 8 | 9 | public void doSomethingC(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section7/ClassA.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassA { 8 | 9 | public void doSomethingA(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section7/ClassB.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassB { 8 | 9 | public void doSomethingB(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section7/ClassC.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ClassC { 8 | 9 | public void doSomethingC(){ 10 | //业务逻辑 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/facade/section7/Context.java: -------------------------------------------------------------------------------- 1 | package com.company.facade.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Context { 8 | //委托处理 9 | private ClassA a = new ClassA(); 10 | private ClassC c = new ClassC(); 11 | //复杂的计算 12 | public void complexMethod(){ 13 | this.a.doSomethingA(); 14 | this.c.doSomethingC(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/factory_strategy/FreeDeduction.java: -------------------------------------------------------------------------------- 1 | package com.company.factory_strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class FreeDeduction implements IDeduction { 8 | 9 | //自由扣款 10 | public boolean exec(Card card, Trade trade) { 11 | //直接从自由余额中扣除 12 | card.setFreeMoney(card.getFreeMoney() - trade.getAmount()); 13 | return true; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/factory_strategy/IDeduction.java: -------------------------------------------------------------------------------- 1 | package com.company.factory_strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IDeduction { 8 | 9 | //扣款,提供交易和卡信息,进行扣款,并返回扣款是否成功 10 | public boolean exec(Card card,Trade trade); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/factorya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/factorya/factorya.jpg -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/AbstractBlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractBlackHuman implements Human { 8 | 9 | public void getColor(){ 10 | System.out.println("黑色人种的皮肤颜色是黑色的!"); 11 | } 12 | 13 | public void talk() { 14 | System.out.println("黑人会说话,一般人听不懂。"); 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/AbstractWhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractWhiteHuman implements Human { 8 | 9 | //白色人种的颜色是白色的 10 | public void getColor(){ 11 | System.out.println("白色人种的皮肤颜色是白色的!"); 12 | } 13 | 14 | //白色人种讲话 15 | public void talk() { 16 | System.out.println("白色人种会说话,一般都是但是单字节。"); 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/AbstractYellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractYellowHuman implements Human { 8 | public void getColor(){ 9 | System.out.println("黄色人种的皮肤颜色是黄色的!"); 10 | } 11 | 12 | public void talk() { 13 | System.out.println("黄色人种会说话,一般说的都是双字节。"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/FemaleBlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class FemaleBlackHuman extends AbstractBlackHuman { 8 | 9 | //女性黑人 10 | public void getSex() { 11 | System.out.println("黑人女性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/FemaleWhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class FemaleWhiteHuman extends AbstractWhiteHuman { 8 | 9 | //白人女性 10 | public void getSex() { 11 | System.out.println("白人女性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/FemaleYellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class FemaleYellowHuman extends AbstractYellowHuman { 8 | 9 | //黄人女性 10 | public void getSex() { 11 | System.out.println("黄人女性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/Human.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个人类的统称 7 | */ 8 | public interface Human { 9 | 10 | //每个人种都有相应的颜色 11 | public void getColor(); 12 | 13 | //人类会说话 14 | public void talk(); 15 | 16 | //每个人都有性别 17 | public void getSex(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/HumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 这次定一个接口,应该要造不同性别的人,需要不同的生产线 7 | * 那这个八卦炉必须可以制造男人和女人 8 | */ 9 | public interface HumanFactory { 10 | 11 | //制造一个黄色人种 12 | public Human createYellowHuman(); 13 | 14 | //制造一个白色人种 15 | public Human createWhiteHuman(); 16 | 17 | //制造一个黑色人种 18 | public Human createBlackHuman(); 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/MaleBlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class MaleBlackHuman extends AbstractBlackHuman { 8 | 9 | //女性黑人 10 | public void getSex() { 11 | System.out.println("黑人男性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/MaleWhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class MaleWhiteHuman extends AbstractWhiteHuman { 8 | 9 | //白人女性 10 | public void getSex() { 11 | System.out.println("白人男性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section1/MaleYellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class MaleYellowHuman extends AbstractYellowHuman { 8 | 9 | //黄人男性 10 | public void getSex() { 11 | System.out.println("黄人男性"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/AbstractCreator.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 抽象的产品类 7 | */ 8 | public abstract class AbstractCreator { 9 | 10 | //创建A产品家族 11 | public abstract AbstractProductA createProductA(); 12 | 13 | //创建B产品家族 14 | public abstract AbstractProductB createProductB(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/AbstractProductA.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品A 7 | */ 8 | public abstract class AbstractProductA { 9 | 10 | //每个产品共有的方法 11 | public void shareMethod(){ 12 | 13 | } 14 | 15 | //每个产品相同方法,不同实现 16 | public abstract void doSomething(); 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/AbstractProductB.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品B 7 | */ 8 | public abstract class AbstractProductB { 9 | 10 | //每个产品共有的方法 11 | public void shareMethod(){ 12 | 13 | } 14 | 15 | //每个产品相同方法,不同实现 16 | public abstract void doSomething(); 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/Creator1.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 工厂1,只生产跳线为1的产品 7 | */ 8 | public class Creator1 extends AbstractCreator { 9 | 10 | //只生产产品等级为1的A产品 11 | public AbstractProductA createProductA() { 12 | return new ProductA1(); 13 | } 14 | 15 | //只生产铲平等级为1的B产品 16 | public AbstractProductB createProductB() { 17 | return new ProductB1(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/Creator2.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 工厂2,只生产跳线为2的产品 7 | */ 8 | public class Creator2 extends AbstractCreator { 9 | 10 | //只生产产品等级为2的A产品 11 | public AbstractProductA createProductA() { 12 | return new ProductA2(); 13 | } 14 | 15 | //只生产铲平等级为2的B产品 16 | public AbstractProductB createProductB() { 17 | return new ProductB2(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/ProductA1.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品A的实现类 7 | */ 8 | public class ProductA1 extends AbstractProductA { 9 | 10 | @Override 11 | public void doSomething() { 12 | System.out.println("产品A1的实现方法"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/ProductA2.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品A的实现类 7 | */ 8 | public class ProductA2 extends AbstractProductA { 9 | 10 | @Override 11 | public void doSomething() { 12 | System.out.println("产品A2的实现方法"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/ProductB1.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品A的实现类 7 | */ 8 | public class ProductB1 extends AbstractProductB { 9 | 10 | @Override 11 | public void doSomething() { 12 | System.out.println("产品B1的实现方法"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorya/section2/ProductB2.java: -------------------------------------------------------------------------------- 1 | package com.company.factorya.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 产品A的实现类 7 | */ 8 | public class ProductB2 extends AbstractProductB { 9 | 10 | @Override 11 | public void doSomething() { 12 | System.out.println("产品B2的实现方法"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/factorys.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/factorys/factorys.jpg -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section1/AbstractHumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractHumanFactory { 8 | 9 | public abstract T createHuman(Class c); 10 | 11 | } -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section1/BlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黑色人种,记得中学学英语,老师说black man是侮辱人的意思,不懂,没跟老外说话 7 | */ 8 | public class BlackHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黑色人种的皮肤颜色是黑色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黑人会说话,一般人听不懂。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section1/Human.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个人类的统称 7 | */ 8 | public interface Human { 9 | 10 | //每个人种都有相应的颜色 11 | public void getColor(); 12 | 13 | //人类会说话 14 | public void talk(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section1/WhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 白色人人种 7 | */ 8 | public class WhiteHuman implements Human { 9 | 10 | //白色人种的颜色是白色的 11 | public void getColor(){ 12 | System.out.println("白色人种的皮肤颜色是白色的!"); 13 | } 14 | 15 | //白色人种讲话 16 | public void talk() { 17 | System.out.println("白色人种会说话,一般都是但是单字节。"); 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section1/YellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黄色人种,这个翻译的不准确,将就点吧 7 | */ 8 | public class YellowHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黄色人种的皮肤颜色是黄色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黄色人种会说话,一般说的都是双字节。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | private static Creator creator; 9 | private static Product product; 10 | 11 | public static void main(String[] args) { 12 | creator = new ConcreteCreator(); 13 | product = creator.createProduct(ConcreteProduct1.class); 14 | /* 15 | * 继续业务处理 16 | */ 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section2/ConcreteProduct1.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 具体的产品类 7 | */ 8 | public class ConcreteProduct1 extends Product { 9 | 10 | public void method2() { 11 | //业务逻辑处理 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section2/ConcreteProduct2.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 具体的产品类 7 | */ 8 | public class ConcreteProduct2 extends Product { 9 | 10 | public void method2() { 11 | //业务逻辑处理 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section2/Creator.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Creator { 8 | 9 | /* 10 | * 创建一个产品对象,其输入参数类型可以自行设置 11 | * 通常为String、Enum、Class等,当然也可以为空 12 | */ 13 | public abstract T createProduct(Class c); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section2/Product.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 抽象产品类 7 | */ 8 | public abstract class Product { 9 | 10 | //产品类的公共方法 11 | public void method1(){ 12 | //业务逻辑处理 13 | } 14 | 15 | //抽象方法1 16 | public abstract void method2(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section3/BlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黑色人种,记得中学学英语,老师说black man是侮辱人的意思,不懂,没跟老外说话 7 | */ 8 | public class BlackHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黑色人种的皮肤颜色是黑色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黑人会说话,一般人听不懂。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section3/Human.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个人类的统称 7 | */ 8 | public interface Human { 9 | 10 | //每个人种都有相应的颜色 11 | public void getColor(); 12 | 13 | //人类会说话 14 | public void talk(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section3/WhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 白色人人种 7 | */ 8 | public class WhiteHuman implements Human { 9 | 10 | //白色人种的颜色是白色的 11 | public void getColor(){ 12 | System.out.println("白色人种的皮肤颜色是白色的!"); 13 | } 14 | 15 | //白色人种讲话 16 | public void talk() { 17 | System.out.println("白色人种会说话,一般都是但是单字节。"); 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section3/YellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黄色人种,这个翻译的不准确,将就点吧 7 | */ 8 | public class YellowHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黄色人种的皮肤颜色是黄色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黄色人种会说话,一般说的都是双字节。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/AbstractHumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractHumanFactory { 8 | 9 | public abstract Human createHuman(); 10 | 11 | } -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/BlackHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黑色人种,记得中学学英语,老师说black man是侮辱人的意思,不懂,没跟老外说话 7 | */ 8 | public class BlackHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黑色人种的皮肤颜色是黑色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黑人会说话,一般人听不懂。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/BlackHumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BlackHumanFactory extends AbstractHumanFactory { 8 | 9 | public Human createHuman() { 10 | return new BlackHuman(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/Human.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个人类的统称 7 | */ 8 | public interface Human { 9 | 10 | //每个人种都有相应的颜色 11 | public void getColor(); 12 | 13 | //人类会说话 14 | public void talk(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/WhiteHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 白色人人种 7 | */ 8 | public class WhiteHuman implements Human { 9 | 10 | //白色人种的颜色是白色的 11 | public void getColor(){ 12 | System.out.println("白色人种的皮肤颜色是白色的!"); 13 | } 14 | 15 | //白色人种讲话 16 | public void talk() { 17 | System.out.println("白色人种会说话,一般都是但是单字节。"); 18 | 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/WhiteHumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class WhiteHumanFactory extends AbstractHumanFactory { 8 | 9 | public Human createHuman() { 10 | return new YellowHuman(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/YellowHuman.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 黄色人种,这个翻译的不准确,将就点吧 7 | */ 8 | public class YellowHuman implements Human { 9 | 10 | public void getColor(){ 11 | System.out.println("黄色人种的皮肤颜色是黄色的!"); 12 | } 13 | 14 | public void talk() { 15 | System.out.println("黄色人种会说话,一般说的都是双字节。"); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section4/YellowHumanFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class YellowHumanFactory extends AbstractHumanFactory { 8 | 9 | public Human createHuman() { 10 | return new WhiteHuman(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section5/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | public static void main(String[] args) { 9 | SingletonFactory.getSingleton().doSomething(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section5/Singleton.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 单例对象 7 | */ 8 | public class Singleton { 9 | 10 | //不允许通过new产生一个对象 11 | private Singleton(){ 12 | 13 | } 14 | 15 | public void doSomething(){ 16 | //业务处理 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section6/ConcreteProduct1.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteProduct1 extends Product { 8 | 9 | public void doSomething() { 10 | //逻辑处理 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section6/ConcreteProduct2.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteProduct2 extends Product { 8 | 9 | public void doSomething() { 10 | //逻辑处理 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/factorys/section6/Product.java: -------------------------------------------------------------------------------- 1 | package com.company.factorys.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 抽象产品类 7 | */ 8 | public abstract class Product { 9 | public abstract void doSomething(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/flyweight/flyweight.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/flyweight/flyweight.gif -------------------------------------------------------------------------------- /src/dp/com/company/flyweight/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.flyweight.section1; 2 | 3 | public class Client { 4 | 5 | public static void main(String[] args) { 6 | //从工厂中获得一个对象 7 | SignInfo signInfo = SignInfoFactory.getSignInfo(); 8 | //进行其他业务处理 9 | } 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/flyweight/section1/SignInfoFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.flyweight.section1; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public class SignInfoFactory { 9 | //报名信息的对象擦很难生气 10 | public static SignInfo getSignInfo(){ 11 | return new SignInfo(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/flyweight/section3/ConcreteFlyweight1.java: -------------------------------------------------------------------------------- 1 | package com.company.flyweight.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteFlyweight1 extends Flyweight{ 8 | 9 | //接受外部状态 10 | public ConcreteFlyweight1(String _Extrinsic){ 11 | super(_Extrinsic); 12 | } 13 | 14 | //根据外部状态进行逻辑处理 15 | public void operate(){ 16 | //业务逻辑 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/flyweight/section3/ConcreteFlyweight2.java: -------------------------------------------------------------------------------- 1 | package com.company.flyweight.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteFlyweight2 extends Flyweight{ 8 | 9 | //接受外部状态 10 | public ConcreteFlyweight2(String _Extrinsic){ 11 | super(_Extrinsic); 12 | } 13 | 14 | //根据外部状态进行逻辑处理 15 | public void operate(){ 16 | //业务逻辑 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/interpreter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/interpreter/interpreter.jpg -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/section1/Expression.java: -------------------------------------------------------------------------------- 1 | package com.company.interpreter.section1; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | * 抽象表达式 9 | */ 10 | public abstract class Expression { 11 | 12 | //解析公式和数值,其中var中的key值是是公式中的参数,value值是具体的数字 13 | public abstract int interpreter(HashMap var); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/section2/Context.java: -------------------------------------------------------------------------------- 1 | package com.company.interpreter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Context { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/section2/Expression.java: -------------------------------------------------------------------------------- 1 | package com.company.interpreter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Expression { 8 | 9 | //每个表达式必须有一个解析任务 10 | public abstract Object interpreter(Context ctx); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/section2/NonterminalExpression.java: -------------------------------------------------------------------------------- 1 | package com.company.interpreter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class NonterminalExpression extends Expression { 8 | 9 | //每个非终结符表达式都会对其他表达式产生依赖 10 | public NonterminalExpression(Expression... expression){ 11 | 12 | } 13 | 14 | public Object interpreter(Context ctx) { 15 | //进行文法处理 16 | return null; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/interpreter/section2/TerminalExpression.java: -------------------------------------------------------------------------------- 1 | package com.company.interpreter.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 终结符表达式 7 | */ 8 | public class TerminalExpression extends Expression { 9 | 10 | 11 | //通常终结符表达式只有一个,但是有多个对象 12 | public Object interpreter(Context ctx) { 13 | return null; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section1/AbstractSearcher.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 星探,搜索美女 7 | */ 8 | public abstract class AbstractSearcher { 9 | protected IPettyGirl pettyGirl; 10 | public AbstractSearcher(IPettyGirl _pettyGirl){ 11 | this.pettyGirl = _pettyGirl; 12 | } 13 | 14 | //搜索美女,列出美女信息 15 | public abstract void show(); 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 场景类 7 | */ 8 | public class Client { 9 | 10 | //搜索并展示美女信息 11 | public static void main(String[] args) { 12 | //定义一个美女 13 | IPettyGirl yanYan = new PettyGirl("嫣嫣"); 14 | AbstractSearcher searcher = new Searcher(yanYan); 15 | searcher.show(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section1/IPettyGirl.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 漂亮女孩的总称 7 | */ 8 | public interface IPettyGirl { 9 | 10 | //要有姣好的面孔 11 | public void goodLooking(); 12 | 13 | //要有好身材 14 | public void niceFigure(); 15 | 16 | //要有气质 17 | public void greatTemperament(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 场景类 7 | */ 8 | public class Client { 9 | 10 | //搜索并展示美女信息 11 | public static void main(String[] args) { 12 | //定义一个气质美女 13 | IGreatTemperamentGirl yanYan = new PettyGirl("嫣嫣"); 14 | AbstractSearcher searcher = new Searcher(yanYan); 15 | searcher.show(); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section2/IGoodBodyGirl.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 外在美 7 | */ 8 | public interface IGoodBodyGirl { 9 | //要有姣好的面孔 10 | public void goodLooking(); 11 | 12 | //要有好身材 13 | public void niceFigure(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/isp/section2/IGreatTemperamentGirl.java: -------------------------------------------------------------------------------- 1 | package com.company.isp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 气质定义 7 | */ 8 | public interface IGreatTemperamentGirl { 9 | //要有气质 10 | public void greatTemperament(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/iterator/iterator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/iterator/iterator.jpg -------------------------------------------------------------------------------- /src/dp/com/company/iterator/section1/IProject.java: -------------------------------------------------------------------------------- 1 | package com.company.iterator.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个接口,所有的项目都是一个接口 7 | */ 8 | public interface IProject { 9 | 10 | //从老板这里看到的就是项目信息 11 | public String getProjectInfo(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/iterator/section2/IProject.java: -------------------------------------------------------------------------------- 1 | package com.company.iterator.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个接口,所有的项目都是一个接口 7 | */ 8 | public interface IProject { 9 | 10 | //增加项目 11 | public void add(String name,int num,int cost); 12 | 13 | //从老板这里看到的就是项目信息 14 | public String getProjectInfo(); 15 | 16 | //获得一个可以被遍历的对象 17 | public IProjectIterator iterator(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/iterator/section2/IProjectIterator.java: -------------------------------------------------------------------------------- 1 | package com.company.iterator.section2; 2 | 3 | import java.util.Iterator; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | * 定义个Iterator接口 9 | */ 10 | @SuppressWarnings("all") 11 | public interface IProjectIterator extends Iterator { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/iterator/section3/Aggregate.java: -------------------------------------------------------------------------------- 1 | package com.company.iterator.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 容器类 7 | */ 8 | public interface Aggregate { 9 | 10 | //是容器必然有元素的增加 11 | public void add(Object object); 12 | 13 | //减少元素 14 | public void remove(Object object); 15 | 16 | //由迭代器来遍历所有的元素 17 | public Iterator iterator(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/iterator/section3/Iterator.java: -------------------------------------------------------------------------------- 1 | package com.company.iterator.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Iterator { 8 | 9 | //遍历到下一个元素 10 | public Object next(); 11 | 12 | //是否已经遍历到尾部 13 | public boolean hasNext(); 14 | 15 | //删除当前指向的元素 16 | public boolean remove(); 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 我们使用Client来描绘一下这个场景 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | Teacher teacher= new Teacher(); 12 | 13 | //老师发布命令 14 | teacher.commond(new GroupLeader()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section1/Girl.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 女生 7 | */ 8 | public class Girl { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section1/GroupLeader.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section1; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | * 体育委员,这个太难翻译了都是中国的特色词汇 9 | */ 10 | public class GroupLeader { 11 | 12 | //有清查女生的工作 13 | public void countGirls(List listGirls){ 14 | System.out.println("女生数量是:"+listGirls.size()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section2/Girl.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 女生 7 | */ 8 | public class Girl { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section2/Teacher.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section2; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | * 老师类 8 | */ 9 | public class Teacher { 10 | 11 | //老师对学生发布命令,清一下女生 12 | public void commond(GroupLeader groupLeader){ 13 | 14 | //告诉体育委员开始执行清查任务 15 | groupLeader.countGirls(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section3/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | InstallSoftware invoker = new InstallSoftware(); 12 | invoker.installWizard(new Wizard()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section4/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | InstallSoftware invoker = new InstallSoftware(); 12 | invoker.installWizard(new Wizard()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lod/section4/InstallSoftware.java: -------------------------------------------------------------------------------- 1 | package com.company.lod.section4; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | * 业务组装类,负责调用各个步骤 8 | */ 9 | public class InstallSoftware { 10 | 11 | public void installWizard(Wizard wizard){ 12 | //不废话,直接调用 13 | wizard.installWizard(); 14 | } 15 | void abc(){ 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/AbstractGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 枪的总称 7 | */ 8 | public abstract class AbstractGun { 9 | 10 | //枪用来干什么的?射击杀戮! 11 | public abstract void shoot(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景模拟类 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //产生三毛这个士兵 12 | Soldier sanMao = new Soldier(); 13 | //给三毛一支枪 14 | sanMao.setGun(new Rifle()); 15 | sanMao.killEnemy(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/Handgun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 手枪类 7 | */ 8 | public class Handgun extends AbstractGun { 9 | 10 | //手枪的特点是携带方便,射程短 11 | @Override 12 | public void shoot() { 13 | System.out.println("手枪射击..."); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/MachineGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 机枪 7 | */ 8 | public class MachineGun extends AbstractGun{ 9 | 10 | public void shoot(){ 11 | System.out.println("机枪扫射..."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/Rifle.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 步枪,我最欣赏的是狙击步枪 7 | */ 8 | public class Rifle extends AbstractGun{ 9 | 10 | //步枪的特点是射程远,威力大 11 | public void shoot(){ 12 | System.out.println("步枪射击..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section1/Soldier.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 士兵使用枪来杀人 7 | */ 8 | public class Soldier { 9 | //定义士兵的枪支 10 | private AbstractGun gun; 11 | //给士兵一支枪 12 | public void setGun(AbstractGun _gun){ 13 | this.gun = _gun; 14 | } 15 | public void killEnemy(){ 16 | System.out.println("士兵开始杀人..."); 17 | gun.shoot(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/AbstractGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 枪的总称 7 | */ 8 | public abstract class AbstractGun { 9 | 10 | //枪用来干什么的?射击杀戮! 11 | public abstract void shoot(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景模拟类 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //产生三毛这个士兵 12 | Soldier sanMao = new Soldier(); 13 | sanMao.setGun(new ToyGun()); 14 | sanMao.killEnemy(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/Handgun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 手枪类 7 | */ 8 | public class Handgun extends AbstractGun { 9 | 10 | //手枪的特点是携带方便,射程短 11 | @Override 12 | public void shoot() { 13 | System.out.println("手枪射击..."); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/MachineGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 机枪 7 | */ 8 | public class MachineGun extends AbstractGun{ 9 | 10 | public void shoot(){ 11 | System.out.println("机枪扫射..."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/Rifle.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 步枪,我最欣赏的是狙击步枪 7 | */ 8 | public class Rifle extends AbstractGun{ 9 | 10 | //步枪的特点是射程远,威力大 11 | public void shoot(){ 12 | System.out.println("步枪射击..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/Soldier.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 士兵使用枪来杀人 7 | */ 8 | public class Soldier { 9 | //定义士兵的枪支 10 | private AbstractGun gun; 11 | //给士兵一支枪 12 | public void setGun(AbstractGun _gun){ 13 | this.gun = _gun; 14 | } 15 | public void killEnemy(){ 16 | System.out.println("士兵开始杀人..."); 17 | gun.shoot(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section2/ToyGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 玩具枪 7 | */ 8 | public class ToyGun extends AbstractGun { 9 | 10 | //玩具枪式不能射击的,但是编译器又要求实现这个方法,怎么办?虚假一个呗! 11 | @Override 12 | public void shoot() { 13 | //玩具枪不能射击,这个方法就不能实现了 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/AUG.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * G3狙击步枪 7 | */ 8 | public class AUG extends Rifle { 9 | 10 | //狙击枪都是携带一个精准的望远镜 11 | public void zoomOut(){ 12 | System.out.println("通过望远镜观看敌人..."); 13 | } 14 | 15 | @Override 16 | public void shoot(){ 17 | System.out.println("AUG射击..."); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/AbstractGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 枪的总称 7 | */ 8 | public abstract class AbstractGun { 9 | 10 | //枪用来干什么的?射击杀戮! 11 | public abstract void shoot(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 业务场景模拟类 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //产生三毛这个狙击手 12 | Snipper sanMao = new Snipper(); 13 | sanMao.setRifle((AUG)(new Rifle())); 14 | sanMao.killEnemy(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/G3.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * G3狙击步枪 7 | */ 8 | public class G3 extends Rifle { 9 | 10 | //狙击枪都是携带一个精准的望远镜 11 | public void zoomOut(){ 12 | System.out.println("通过望远镜观看敌人..."); 13 | } 14 | 15 | @Override 16 | public void shoot(){ 17 | System.out.println("G3射击..."); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/Handgun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 手枪类 7 | */ 8 | public class Handgun extends AbstractGun { 9 | 10 | //手枪的特点是携带方便,射程短 11 | @Override 12 | public void shoot() { 13 | System.out.println("手枪射击..."); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/MachineGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 机枪 7 | */ 8 | public class MachineGun extends AbstractGun{ 9 | 10 | public void shoot(){ 11 | System.out.println("机枪扫射..."); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/Rifle.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 步枪,我最欣赏的是狙击步枪 7 | */ 8 | public class Rifle extends AbstractGun{ 9 | 10 | //步枪的特点是射程远,威力大 11 | public void shoot(){ 12 | System.out.println("步枪射击..."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/Soldier.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 士兵使用枪来杀人 7 | */ 8 | public class Soldier { 9 | 10 | public void killEnemy(AbstractGun gun){ 11 | System.out.println("士兵开始杀人..."); 12 | gun.shoot(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section3/ToyGun.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 玩具枪 7 | */ 8 | public class ToyGun extends AbstractGun { 9 | 10 | //玩具枪式不能射击的,但是编译器又要求实现这个方法,怎么办?虚假一个呗! 11 | @Override 12 | public void shoot() { 13 | //玩具枪不能射击,这个方法就不能实现了 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section4/Father.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section4; 2 | 3 | import java.util.Collection; 4 | import java.util.HashMap; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 父类 10 | */ 11 | @SuppressWarnings("all") 12 | public class Father { 13 | 14 | public Collection doSomething(HashMap map){ 15 | System.out.println("父类被执行..."); 16 | return map.values(); 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section4/Son.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section4; 2 | 3 | import java.util.Collection; 4 | import java.util.Map; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 子类 10 | */ 11 | public class Son extends Father { 12 | 13 | //放大输入参数类型 14 | public Collection doSomething(Map map){ 15 | System.out.println("子类被执行..."); 16 | return map.values(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section5/Father.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section5; 2 | 3 | import java.util.Collection; 4 | import java.util.Map; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 父类 10 | */ 11 | @SuppressWarnings("all") 12 | public class Father { 13 | 14 | public Collection doSomething(Map map){ 15 | System.out.println("父类被执行..."); 16 | return map.values(); 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section5/Son.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section5; 2 | 3 | import java.util.Collection; 4 | import java.util.HashMap; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 子类 10 | */ 11 | public class Son extends Father { 12 | 13 | //缩小输入参数范围 14 | public Collection doSomething(HashMap map){ 15 | System.out.println("子类被执行..."); 16 | return map.values(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section6/Father.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section6; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashMap; 5 | import java.util.List; 6 | 7 | /** 8 | * @author cbf4Life cbf4life@126.com 9 | * I'm glad to share my knowledge with you all. 10 | * 父类 11 | */ 12 | @SuppressWarnings("all") 13 | public class Father { 14 | 15 | public ArrayList doSomething(HashMap map){ 16 | System.out.println("父类被执行..."); 17 | return new ArrayList(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/lsp/section6/Son.java: -------------------------------------------------------------------------------- 1 | package com.company.lsp.section6; 2 | 3 | import java.util.Collection; 4 | import java.util.Map; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 子类 10 | */ 11 | @SuppressWarnings("all") 12 | public class Son extends Father { 13 | 14 | public Collection doSomething(Map map){ 15 | System.out.println("子类被执行..."); 16 | return map.values(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/mediator/mediator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/mediator/mediator.jpg -------------------------------------------------------------------------------- /src/dp/com/company/mediator/section2/AbstractColleague.java: -------------------------------------------------------------------------------- 1 | package com.company.mediator.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 同事的抽象类 7 | */ 8 | public abstract class AbstractColleague { 9 | protected AbstractMediator mediator; 10 | public AbstractColleague(AbstractMediator _mediator){ 11 | this.mediator = _mediator; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/mediator/section3/Colleague.java: -------------------------------------------------------------------------------- 1 | package com.company.mediator.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 同事类 7 | */ 8 | public abstract class Colleague { 9 | protected Mediator mediator; 10 | public Colleague(Mediator _mediator){ 11 | this.mediator = _mediator; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/example/Caretaker.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Caretaker { 8 | 9 | //备忘录对象 10 | private Memento memento; 11 | 12 | public Memento getMemento() { 13 | return memento; 14 | } 15 | 16 | public void setMemento(Memento memento) { 17 | this.memento = memento; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/memento.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/memento/memento.jpg -------------------------------------------------------------------------------- /src/dp/com/company/memento/section4/Caretaker.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Caretaker { 8 | 9 | //备忘录对象 10 | private Memento memento; 11 | 12 | public Memento getMemento() { 13 | return memento; 14 | } 15 | 16 | public void setMemento(Memento memento) { 17 | this.memento = memento; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/section5/Caretaker.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Caretaker { 8 | 9 | //发起人对象 10 | private Originator originator; 11 | 12 | public Originator getOriginator() { 13 | return originator; 14 | } 15 | 16 | public void setOriginator(Originator originator) { 17 | this.originator = originator; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/section7/Caretaker.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Caretaker { 8 | 9 | //备忘录对象 10 | private Memento memento; 11 | 12 | public Memento getMemento() { 13 | return memento; 14 | } 15 | 16 | public void setMemento(Memento memento) { 17 | this.memento = memento; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/section9/Caretaker.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.section9; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Caretaker { 8 | 9 | //备忘录对象 10 | private IMemento memento; 11 | 12 | public IMemento getMemento() { 13 | return memento; 14 | } 15 | 16 | public void setMemento(IMemento memento) { 17 | this.memento = memento; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/memento/section9/IMemento.java: -------------------------------------------------------------------------------- 1 | package com.company.memento.section9; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IMemento { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/action/ActionManager.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.action; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public class ActionManager { 9 | 10 | 11 | //执行Action的指定方法 12 | public String execAction(String actionName){ 13 | return null; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/action/ActionSupport.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.action; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class ActionSupport { 8 | public final static String SUCCESS = "success"; 9 | public final static String FAIL = "fail"; 10 | 11 | //默认的执行方法 12 | public String execute(){ 13 | return SUCCESS; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/action/IActionDispather.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.action; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IActionDispather { 8 | 9 | //根据action的名字,返回处理结果 10 | public String actionInvoke(String actionName); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/action/InterceptorConfig.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.action; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class InterceptorConfig { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/action/InterceptorFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.action; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public class InterceptorFactory { 10 | 11 | 12 | public static ArrayList createInterceptors(){ 13 | //根据本质配置文件创建出所有的拦截器链 14 | return null; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/helper/CommonXmlValidate.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.helper; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 普通的XML检查,也就是XML语法检查 7 | */ 8 | public class CommonXmlValidate implements IXmlValidate { 9 | 10 | //XML语法检查,比如是否少写了一个结束标志 11 | public boolean validate(String xmlPath) { 12 | return false; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/helper/IXmlValidate.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.helper; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IXmlValidate { 8 | 9 | //只有一个方法,检查XML是否符合条件 10 | public boolean validate(String xmlPath); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/helper/LogicXmlValidate.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.helper; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class LogicXmlValidate implements IXmlValidate { 8 | 9 | //检查xmlPath是否符合逻辑,比如不会出现一个类中没有的方法 10 | public boolean validate(String xmlPath) { 11 | return false; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/helper/ParamMapping.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.helper; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | * 8 | */ 9 | public class ParamMapping { 10 | 11 | //接收一个req参数 12 | 13 | //把从HTTP传递过来的数据映射为一个对象 14 | public Object getBO(){ 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/helper/Watchable.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.helper; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Watchable { 8 | 9 | //监听 10 | public void watch(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/valuestack/ValueStack.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.valuestack; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ValueStack { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/view/AbsLangData.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.view; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public abstract class AbsLangData { 10 | 11 | //获得所有的动态元素的配置项 12 | public abstract Map getItems(); 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/view/ENLangData.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.view; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public class ENLangData extends AbsLangData { 10 | 11 | 12 | @Override 13 | public Map getItems() { 14 | /* 15 | * Map结构为: 16 | * key='title',value='title'; 17 | * key='menu', value='menu' 18 | */ 19 | return null; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/dp/com/company/mvc/view/GBLangData.java: -------------------------------------------------------------------------------- 1 | package com.company.mvc.view; 2 | 3 | import java.util.Map; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | * 中文字符 9 | */ 10 | public class GBLangData extends AbsLangData { 11 | 12 | @Override 13 | public Map getItems() { 14 | /* 15 | * map 的结构为: 16 | * key='title', value='标题' 17 | * key='menu', value='菜单' 18 | */ 19 | return null; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/example/Merchant1Observer.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Merchant1Observer implements Observer { 8 | 9 | private String name; 10 | 11 | public Merchant1Observer(String name){ 12 | this.name = name; 13 | } 14 | 15 | //实现更新方法 16 | public void update() { 17 | System.out.println(name + "接收到信息,并进行处理!"); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/example/Observer.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.example; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public interface Observer { 9 | 10 | //更新方法 11 | public void update(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/example/SltoSaleCeaseSubject.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class SltoSaleCeaseSubject extends Subject { 8 | 9 | //具体的业务 10 | public void doSomething(){ 11 | System.out.println("双色球停止销售"); 12 | /* 13 | * do something 14 | */ 15 | super.notifyObserver(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/observer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/observer/observer.jpg -------------------------------------------------------------------------------- /src/dp/com/company/observer/section1/IHanFeiZi.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 类似韩非子这花样的人,被监控起来了还不知道 7 | */ 8 | public interface IHanFeiZi { 9 | 10 | //韩非子也是人,也要吃早饭的 11 | public void haveBreakfast(); 12 | 13 | //韩非之也是人,是人就要娱乐活动,至于活动时啥,嘿嘿,不说了 14 | public void haveFun(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section1/ILiSi.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 类似于李斯的这种人,现代嘛叫做偷窥狂 7 | */ 8 | public interface ILiSi { 9 | 10 | //一发现别人有动静,自己也要行动起来 11 | public void update(String context); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 这个Client就是我们,用我们的视角看待这段历史 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //定义出韩非子 12 | HanFeiZi hanFeiZi = new HanFeiZi(); 13 | 14 | //然后这里我们看看韩非子在干什么 15 | hanFeiZi.haveBreakfast(); 16 | 17 | //韩非子娱乐了 18 | hanFeiZi.haveFun(); 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section2/IHanFeiZi.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 类似韩非子这花样的人,被监控起来了还不知道 7 | */ 8 | public interface IHanFeiZi { 9 | 10 | //韩非子也是人,也要吃早饭的 11 | public void haveBreakfast(); 12 | 13 | //韩非之也是人,是人就要娱乐活动,至于活动时啥,嘿嘿,不说了 14 | public void haveFun(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section2/ILiSi.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 类似于李斯的这种人,现代嘛叫做偷窥狂 7 | */ 8 | public interface ILiSi { 9 | 10 | //一发现别人有动静,自己也要行动起来 11 | public void update(String context); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section3/IHanFeiZi.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 类似韩非子这花样的人,被监控起来了还不知道 7 | */ 8 | public interface IHanFeiZi { 9 | 10 | //韩非子也是人,也要吃早饭的 11 | public void haveBreakfast(); 12 | 13 | //韩非之也是人,是人就要娱乐活动,至于活动时啥,嘿嘿,不说了 14 | public void haveFun(); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section3/Observable.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 所有被观察者者,通用接口 7 | */ 8 | public interface Observable { 9 | 10 | //增加一个观察者 11 | public void addObserver(Observer observer); 12 | 13 | //删除一个观察者,——我不想让你看了 14 | public void deleteObserver(Observer observer); 15 | 16 | //既然要观察,我发生改变了他也应该用所动作——通知观察者 17 | public void notifyObservers(String context); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section3/Observer.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 所有观察者,通用接口 7 | */ 8 | public interface Observer { 9 | 10 | //一发现别人有动静,自己也要行动起来 11 | public void update(String context); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section4/ConcreteObserver.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteObserver implements Observer { 8 | 9 | //实现更新方法 10 | public void update() { 11 | System.out.println("接收到信息,并进行处理!"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section4/ConcreteSubject.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteSubject extends Subject { 8 | 9 | //具体的业务 10 | public void doSomething(){ 11 | /* 12 | * do something 13 | */ 14 | super.notifyObserver(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/observer/section4/Observer.java: -------------------------------------------------------------------------------- 1 | package com.company.observer.section4; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public interface Observer { 9 | 10 | //更新方法 11 | public void update(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/observer_mediator/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.observer_mediator.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | Product p = new Product(new ProductManager(),"abc"); 11 | System.out.println(p.getName()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section1/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section2/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section3/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section4/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section4/IComputerBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计算机书籍 7 | */ 8 | public interface IComputerBook extends IBook{ 9 | 10 | //计算机书籍是有一个范围 11 | public String getScope(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section5/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section5/IComputerBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计算机书籍 7 | */ 8 | public interface IComputerBook extends IBook{ 9 | 10 | //计算机书籍是有一个范围 11 | public String getScope(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section6/AbstractOffRole.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 打折规则 7 | */ 8 | public abstract class AbstractOffRole { 9 | //传递进来一个对象 10 | public abstract int getOffPoint(); 11 | 12 | //读取配置文件,并形成规则 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section6/BookOffRole.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BookOffRole extends AbstractOffRole { 8 | private IBook book; 9 | 10 | public BookOffRole(IBook _book){ 11 | this.book = _book; 12 | } 13 | 14 | @Override 15 | public int getOffPoint() { 16 | // TODO Auto-generated method stub 17 | return 0; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section6/IBook.java: -------------------------------------------------------------------------------- 1 | package com.company.ocp.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 计书籍接口 7 | */ 8 | public interface IBook { 9 | 10 | //书籍有名称 11 | public String getName(); 12 | 13 | //书籍有售价 14 | public int getPrice(); 15 | 16 | //书籍有作者 17 | public String getAuthor(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/ocp/section6/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/AbstractCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractCmd { 8 | //对接收者的应用 9 | protected IReceiver compress = new CompressReceiver(); 10 | protected IReceiver uncompress = new UncompressReceiver(); 11 | 12 | //抽象方法,命令的具体单元 13 | public abstract boolean execute(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/GzipCompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class GzipCompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.compress.gzipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/GzipUncompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class GzipUncompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.uncompress.gzipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/IReceiver.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IReceiver { 8 | 9 | //执行zip命令 10 | public boolean zipExec(String source,String to); 11 | 12 | //执行gzip命令 13 | public boolean gzipExec(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/Invoker.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Invoker { 8 | //抽象命令的引用 9 | private AbstractCmd cmd; 10 | public Invoker(AbstractCmd _cmd){ 11 | this.cmd = _cmd; 12 | } 13 | 14 | //执行命令 15 | public boolean execute(String source,String to){ 16 | return cmd.execute(source, to); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/ZipCompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ZipCompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.compress.zipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/command/ZipUncompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ZipUncompressCmd extends AbstractCmd { 8 | 9 | 10 | public boolean execute(String source,String to) { 11 | return super.uncompress.zipExec(source, to); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/command_vs_strategy/strategy/Algorithm.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.command_vs_strategy.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Algorithm { 8 | 9 | //压缩算法 10 | public boolean compress(String source,String to); 11 | 12 | //解压缩算法 13 | public boolean uncompress(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/state/AdultState.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.state; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class AdultState extends HumanState { 8 | 9 | //成年人的工作就是挣钱 10 | @Override 11 | public void work() { 12 | System.out.println("成年人的工作就是挣钱!"); 13 | super.human.setState(Human.OLD_STATE); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/state/ChildState.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.state; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ChildState extends HumanState{ 8 | 9 | //儿童的工作就是玩耍 10 | public void work(){ 11 | System.out.println("儿童的工作是玩耍!"); 12 | super.human.setState(Human.ADULT_STATE); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/state/HumanState.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.state; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class HumanState { 8 | //指向一个具体的人 9 | protected Human human; 10 | //设置一个具体的人 11 | public void setHuman(Human _human){ 12 | this.human = _human; 13 | } 14 | 15 | //不管人是什么状态都要工作 16 | public abstract void work(); 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/state/OldState.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.state; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class OldState extends HumanState { 8 | 9 | //老年人的工作就是回忆 10 | @Override 11 | public void work() { 12 | System.out.println("老年人的工作就是回忆以前的生活!"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/strategy/AdultWork.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class AdultWork extends WorkAlgorithm { 8 | 9 | //成年人的工作 10 | @Override 11 | public void work() { 12 | System.out.println("成年人的工作就是挣钱!"); 13 | 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/strategy/ChildWork.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ChildWork extends WorkAlgorithm { 8 | 9 | //小孩的工作 10 | @Override 11 | public void work() { 12 | System.out.println("儿童的工作是玩耍!"); 13 | 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/strategy/OldWork.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class OldWork extends WorkAlgorithm { 8 | 9 | //老年人的工作 10 | @Override 11 | public void work() { 12 | System.out.println("老年人的工作就是回忆以前的生活!"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkbehavior/strategy_vs_state/strategy/WorkAlgorithm.java: -------------------------------------------------------------------------------- 1 | package com.company.pkbehavior.strategy_vs_state.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class WorkAlgorithm { 8 | 9 | //每个年龄段都必须完成的工作 10 | public abstract void work(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/AbsBenz.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbsBenz implements ICar { 8 | private final static String BENZ_BAND = "奔驰汽车"; 9 | 10 | public String getBand() { 11 | return BENZ_BAND; 12 | } 13 | 14 | //具体型号由实现类完成 15 | public abstract String getModel(); 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BMWFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BMWFactory implements CarFactory { 8 | 9 | //生产SUV 10 | public ICar createSuv() { 11 | return new BMWSuv(); 12 | } 13 | 14 | //生产商务车 15 | public ICar createVan(){ 16 | return new BMWVan(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BMWSuv.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BMWSuv extends AbsBMW { 8 | private final static String X_SEARIES = "X系列车型SUV"; 9 | 10 | @Override 11 | public String getModel() { 12 | return X_SEARIES; 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BMWVan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BMWVan extends AbsBMW { 8 | private final static String SEVENT_SEARIES = "7系列车型商务车"; 9 | 10 | @Override 11 | public String getModel() { 12 | return SEVENT_SEARIES; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BenzFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BenzFactory implements CarFactory { 8 | 9 | //生产SUV 10 | public ICar createSuv() { 11 | return new BenzSuv(); 12 | } 13 | 14 | //生产商务车 15 | public ICar createVan(){ 16 | return new BenzVan(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BenzSuv.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BenzSuv extends AbsBenz { 8 | private final static String G_SERIES = "G系列SUV"; 9 | 10 | @Override 11 | public String getModel() { 12 | return G_SERIES; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/BenzVan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class BenzVan extends AbsBenz { 8 | private final static String R_SERIES = "R系列商务车"; 9 | 10 | @Override 11 | public String getModel() { 12 | return R_SERIES; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/CarFactory.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface CarFactory { 8 | 9 | //生产SUV 10 | public ICar createSuv(); 11 | //生产商务车 12 | public ICar createVan(); 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/abstract_factory/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.abstract_factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface ICar { 8 | 9 | //汽车的生产商,也就是牌子 10 | public String getBand(); 11 | 12 | //汽车的型号 13 | public String getModel(); 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/AbstractFactory_vs_Builder/builder/ICar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.AbstractFactory_vs_Builder.builder; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | //汽车接口 8 | public interface ICar { 9 | //汽车的车轮 10 | public String getWheel(); 11 | //汽车引擎 12 | public String getEngine(); 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/builder/AdultSuperManBuilder.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.builder; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class AdultSuperManBuilder extends Builder { 8 | 9 | @Override 10 | public SuperMan getSuperMan() { 11 | super.setBody("强壮的躯体"); 12 | super.setSpecialTalent("会飞行"); 13 | super.setSpecialSymbol("胸前带S标记"); 14 | return super.superMan; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/builder/ChildSuperManBuilder.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.builder; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ChildSuperManBuilder extends Builder { 8 | 9 | 10 | @Override 11 | public SuperMan getSuperMan() { 12 | super.setBody("强壮的躯体"); 13 | super.setSpecialTalent("刀枪不入"); 14 | super.setSpecialSymbol("胸前带小S标记"); 15 | return super.superMan; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/builder/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.builder; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //建造一个成年超人 11 | SuperMan adultSuperMan = Director.getAdultSuperMan(); 12 | //展示一下超人的信息 13 | adultSuperMan.getSpecialTalent(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/factory/AdultSuperMan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class AdultSuperMan implements ISuperMan { 8 | 9 | //超能先生 10 | public void specialTalent() { 11 | System.out.println("超人力大无穷"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/factory/ChildSuperMan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ChildSuperMan implements ISuperMan { 8 | 9 | //超能先生的三个孩子 10 | public void specialTalent() { 11 | System.out.println("小超人的能力是刀枪不入、快速运动"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/factory/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | //模拟生产超人 10 | public static void main(String[] args) { 11 | //生产一个成年超人 12 | ISuperMan adultSuperMan = SuperManFactory.createSuperMan("adult"); 13 | //展示一下超人的技能 14 | adultSuperMan.specialTalent(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcreate/factory_vs_builder/factory/ISuperMan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcreate.factory_vs_builder.factory; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface ISuperMan { 8 | 9 | //每个超人都有特殊技能 10 | public void specialTalent(); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/AbstractCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractCmd { 8 | //对接收者的应用 9 | protected IReceiver compress = new CompressReceiver(); 10 | protected IReceiver uncompress = new UncompressReceiver(); 11 | 12 | //抽象方法,命令的具体单元 13 | public abstract boolean execute(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/GzipCompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class GzipCompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.compress.gzipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/GzipUncompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class GzipUncompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.uncompress.gzipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/IReceiver.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IReceiver { 8 | 9 | //执行zip命令 10 | public boolean zipExec(String source,String to); 11 | 12 | //执行gzip命令 13 | public boolean gzipExec(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/Invoker.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Invoker { 8 | //抽象命令的引用 9 | private AbstractCmd cmd; 10 | public Invoker(AbstractCmd _cmd){ 11 | this.cmd = _cmd; 12 | } 13 | 14 | //执行命令 15 | public boolean execute(String source,String to){ 16 | return cmd.execute(source, to); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/ZipCompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ZipCompressCmd extends AbstractCmd { 8 | 9 | public boolean execute(String source,String to) { 10 | return super.compress.zipExec(source, to); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/command/ZipUncompressCmd.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.command; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ZipUncompressCmd extends AbstractCmd { 8 | 9 | 10 | public boolean execute(String source,String to) { 11 | return super.uncompress.zipExec(source, to); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/command_vs_strategy/strategy/Algorithm.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.command_vs_strategy.strategy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Algorithm { 8 | 9 | //压缩算法 10 | public boolean compress(String source,String to); 11 | 12 | //解压缩算法 13 | public boolean uncompress(String source,String to); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/adapter/FilmStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 电影明星 7 | * 8 | */ 9 | public class FilmStar implements IStar { 10 | 11 | public void act(String context) { 12 | System.out.println("明星演戏:" + context); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/adapter/IActor.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 普通演员 7 | */ 8 | public interface IActor { 9 | 10 | //真实的演员演戏 11 | public void playact(String contet); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/adapter/IStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 明星类 7 | */ 8 | public interface IStar { 9 | 10 | //明星都要演戏 11 | public void act(String context); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/adapter/Standin.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Standin implements IStar { 8 | private IActor actor; 9 | 10 | //替身是谁 11 | public Standin(IActor _actor){ 12 | this.actor = _actor; 13 | } 14 | 15 | public void act(String context) { 16 | actor.playact(context); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/adapter/UnknownActor.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class UnknownActor implements IActor { 8 | 9 | //无名演员演戏 10 | public void playact(String context) { 11 | System.out.println("无名演员:"+context); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/bridge/AbstractAction.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.bridge; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractAction { 8 | 9 | //每个活动都有描述 10 | public abstract void desc(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/bridge/AbstractStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.bridge; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbstractStar { 8 | //一个明星参加哪些活动 9 | protected final AbstractAction action; 10 | 11 | //通过构造函数传递具体活动 12 | public AbstractStar(AbstractAction _action){ 13 | this.action = _action; 14 | } 15 | 16 | //每个明星都有自己的主要工作 17 | public void doJob(){ 18 | action.desc(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/bridge/ActFilm.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.bridge; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ActFilm extends AbstractAction { 8 | 9 | 10 | @Override 11 | public void desc() { 12 | System.out.println("演出精彩绝伦的电影"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/bridge/Sing.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.bridge; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Sing extends AbstractAction { 8 | 9 | @Override 10 | public void desc() { 11 | System.out.println("唱出优美的歌曲"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/decorator/Decorator.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Decorator implements IStar { 8 | //粉饰的是谁 9 | private IStar star; 10 | 11 | public Decorator(IStar _star){ 12 | this.star = _star; 13 | } 14 | 15 | public void act() { 16 | this.star.act(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/decorator/Deny.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Deny extends Decorator { 8 | 9 | public Deny(IStar _star){ 10 | super(_star); 11 | } 12 | 13 | @Override 14 | public void act(){ 15 | super.act(); 16 | System.out.println("排演后:百般抵赖,死不承认"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/decorator/FreakStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class FreakStar implements IStar { 8 | 9 | public void act() { 10 | System.out.println("排演中:演技很拙劣"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/decorator/HotAir.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class HotAir extends Decorator { 8 | public HotAir(IStar _star){ 9 | super(_star); 10 | } 11 | 12 | @Override 13 | public void act(){ 14 | System.out.println("排演前:夸夸其谈,没有自己不能演的角色"); 15 | super.act(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/decorator/IStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IStar { 8 | 9 | //演戏 10 | public void act(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/proxy/Agent.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Agent implements IStar { 8 | //定义是谁的代理人 9 | private IStar star; 10 | //构造函数传递明星 11 | public Agent(IStar _star){ 12 | this.star = _star; 13 | } 14 | //代理人是不会签字的,签字了歌迷也不认呀 15 | public void sign() { 16 | star.sign(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/proxy/IStar.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 明星类 7 | */ 8 | public interface IStar { 9 | 10 | //明星都会签名 11 | public void sign(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/proxy/Idolater.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 受众 7 | */ 8 | public class Idolater { 9 | 10 | public static void main(String[] args) { 11 | //崇拜的明星是谁 12 | IStar star = new Singer(); 13 | //找到明星的代理人 14 | IStar agent = new Agent(star); 15 | System.out.println("追星族:我是你的崇拜者,请签名!"); 16 | //签字 17 | agent.sign(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/pkcross/wrapper/proxy/Singer.java: -------------------------------------------------------------------------------- 1 | package com.company.pkcross.wrapper.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 歌星 7 | */ 8 | public class Singer implements IStar { 9 | 10 | 11 | public void sign() { 12 | System.out.println("明星签字:我是XXX大明星"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/decorator_vs_adapter/adapter/Duck.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.decorator_vs_adapter.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Duck { 8 | 9 | //会叫 10 | public void cry(); 11 | 12 | //鸭子的外形 13 | public void desAppearance(); 14 | 15 | //描述鸭子的其他行为 16 | public void desBehavior(); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/decorator_vs_adapter/adapter/Swan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.decorator_vs_adapter.adapter; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Swan { 8 | 9 | //天鹅会飞 10 | public void fly(); 11 | 12 | //天鹅会叫 13 | public void cry(); 14 | 15 | //天鹅都有漂亮的外表 16 | public void desAppaearance(); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/decorator_vs_adapter/decorator/StrongBehavior.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.decorator_vs_adapter.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class StrongBehavior extends Decorator { 8 | //强化谁 9 | public StrongBehavior(Swan _swan){ 10 | super(_swan); 11 | } 12 | 13 | //会飞行了 14 | public void fly(){ 15 | System.out.println("会飞行了!"); 16 | } 17 | } -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/decorator_vs_adapter/decorator/Swan.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.decorator_vs_adapter.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 天鹅s 7 | */ 8 | public interface Swan { 9 | 10 | //天鹅会飞 11 | public void fly(); 12 | 13 | //天鹅会叫 14 | public void cry(); 15 | 16 | //天鹅都有漂亮的外表 17 | public void desAppaearance(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/proxy_vs_decorator/decorator/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.proxy_vs_decorator.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //定义出运动员 11 | IRunner liu = new Runner(); 12 | //对其功能加强 13 | liu = new RunnerWithJet(liu); 14 | //看看它的跑步情况如何 15 | System.out.println("===增强后的运动员的功能==="); 16 | liu.run(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/proxy_vs_decorator/decorator/IRunner.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.proxy_vs_decorator.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IRunner { 8 | 9 | //运动员的主要工作就是跑 10 | public void run(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/proxy_vs_decorator/decorator/Runner.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.proxy_vs_decorator.decorator; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Runner implements IRunner { 8 | 9 | 10 | public void run() { 11 | System.out.println("运动员跑步:动作很潇洒"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/proxy_vs_decorator/proxy/IRunner.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.proxy_vs_decorator.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IRunner { 8 | 9 | //运动员的主要工作就是跑 10 | public void run(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/pkstructure/proxy_vs_decorator/proxy/Runner.java: -------------------------------------------------------------------------------- 1 | package com.company.pkstructure.proxy_vs_decorator.proxy; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Runner implements IRunner { 8 | 9 | 10 | public void run() { 11 | System.out.println("运动员跑步:动作很潇洒"); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/prototype/prototype.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/prototype/prototype.gif -------------------------------------------------------------------------------- /src/dp/com/company/prototype/section3/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.prototype.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | 10 | public static void main(String[] args) { 11 | //产生一个对象 12 | Thing thing = new Thing(); 13 | 14 | //拷贝一个对象 15 | Thing cloneThing = thing.clone(); 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section1/RealSubject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class RealSubject implements Subject { 8 | 9 | //业务操作 10 | public void doSomething(String str) { 11 | System.out.println("do something!---->" + str); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section1/Subject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Subject { 8 | 9 | //业务操作 10 | public void doSomething(String abc); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/AfterAdvice.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class AfterAdvice implements IAdvice { 8 | 9 | public void exec() { 10 | System.out.println("我是后续通知,我被执行了!"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/BeforeAdvice.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 前置通知 7 | */ 8 | public class BeforeAdvice implements IAdvice{ 9 | 10 | public void exec(){ 11 | System.out.println("我是前置通知,我被执行了!"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //定义一个主题 12 | Subject subject = new RealSubject(); 13 | //定义主题的代理 14 | Subject proxy = SubjectDynamicProxy.newProxyInstance(subject); 15 | //代理的行为 16 | proxy.doSomething("Finish"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/IAdvice.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 抽象通知 7 | */ 8 | public interface IAdvice { 9 | 10 | //通知只有一个方法,执行即可 11 | public void exec(); 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/RealSubject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class RealSubject implements Subject { 8 | 9 | //业务操作 10 | public void doSomething(String str) { 11 | System.out.println("do something!---->" + str); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamic/section2/Subject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.dynamic.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Subject { 8 | 9 | //业务操作 10 | public void doSomething(String abc); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/dynamicproxy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/proxy/dynamicproxy.jpg -------------------------------------------------------------------------------- /src/dp/com/company/proxy/proxy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/proxy/proxy.jpg -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section1/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section1/KindWomen.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.proxy.section1; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 定义一种类型的女人,王婆和潘金莲都属于这个类型的女人 10 | */ 11 | public interface KindWomen { 12 | 13 | //抛媚眼 14 | public void makeEyesWithMan(); 15 | 16 | //happy what? You know that! 17 | public void happyWithMan(); 18 | 19 | //女人,不仅仅是女人了,羞耻感都会随着环境变化变化 20 | public void increaseSharme(int level); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section10/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section10; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section11/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section11; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section2/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section3/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | Subject realSub = new RealSubject(); 11 | Subject proxy = new Proxy(realSub); 12 | proxy.request(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section3/RealSubject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class RealSubject implements Subject { 8 | 9 | //实现方法 10 | public void request() { 11 | //业务逻辑处理 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section3/Subject.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Subject { 8 | 9 | //定义一个方法 10 | public void request(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section4/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section5/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | 19 | //每个人都可以找一下自己的代理 20 | public IGamePlayer getProxy(); 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section6/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | 19 | //每个人都可以找一下自己的代理 20 | public IGamePlayer getProxy(); 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section7/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | 19 | //每个人都可以找一下自己的代理 20 | public IGamePlayer getProxy(); 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section8/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section8; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section8/IProxy.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section8; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 代理人员的接口 7 | */ 8 | public interface IProxy { 9 | //计算费用 10 | public void count(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/proxy/section9/IGamePlayer.java: -------------------------------------------------------------------------------- 1 | package com.company.proxy.section9; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 游戏玩家 7 | */ 8 | public interface IGamePlayer { 9 | 10 | //登录游戏 11 | public void login(String user,String password); 12 | 13 | //杀怪,这是网络游戏的主要特色 14 | public void killBoss(); 15 | 16 | //升级 17 | public void upgrade(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/singleton/ext/Mgr08.java: -------------------------------------------------------------------------------- 1 | package com.company.singleton.ext; 2 | 3 | /** 4 | * 不仅可以解决线程同步,还可以防止反序列化。 5 | */ 6 | public enum Mgr08 { 7 | 8 | INSTANCE; 9 | 10 | public void m() { 11 | } 12 | 13 | public static void main(String[] args) { 14 | for (int i = 0; i < 100; i++) { 15 | new Thread(() -> { 16 | System.out.println(Mgr08.INSTANCE.hashCode()); 17 | }).start(); 18 | } 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/singleton/singleton.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/singleton/singleton.gif -------------------------------------------------------------------------------- /src/dp/com/company/specification/section1/IUserProvider.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section1; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * @author cbf4Life cbf4life@126.com 7 | * I'm glad to share my knowledge with you all. 8 | */ 9 | public interface IUserProvider { 10 | 11 | //根据用户名查找用户 12 | public ArrayList findUserByNameEqual(String name); 13 | 14 | //年龄大于指定年龄的用户 15 | public ArrayList findUserByAgeThan(int age); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section2/IUserProvider.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section2; 2 | 3 | import java.util.ArrayList; 4 | 5 | import com.company.specification.section1.User; 6 | 7 | /** 8 | * @author cbf4Life cbf4life@126.com 9 | * I'm glad to share my knowledge with you all. 10 | */ 11 | public interface IUserProvider { 12 | 13 | //根据条件查找用户 14 | public ArrayList findUser(boolean condition); 15 | } 16 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section3/IUserProvider.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section3; 2 | 3 | import java.util.ArrayList; 4 | 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | */ 10 | public interface IUserProvider { 11 | 12 | //根据条件查找用户 13 | public ArrayList findUser(IUserSpecification userSpec); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section3/IUserSpecification.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IUserSpecification { 8 | 9 | //候选者是否满足要求 10 | public boolean IsSatisfiedBy(User user); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section4/IUserProvider.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section4; 2 | 3 | import java.util.ArrayList; 4 | 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | */ 10 | public interface IUserProvider { 11 | 12 | //根据条件查找用户 13 | public ArrayList findUser(IUserSpecification userSpec); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section4/IUserSpecification.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IUserSpecification { 8 | 9 | //候选者是否满足要求 10 | public boolean IsSatisfiedBy(User user); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/dp/com/company/specification/section5/IUserProvider.java: -------------------------------------------------------------------------------- 1 | package com.company.specification.section5; 2 | 3 | import java.util.ArrayList; 4 | 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | */ 10 | public interface IUserProvider { 11 | 12 | //根据条件查找用户 13 | public ArrayList findUser(IUserSpecification userSpec); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/srp/README.md: -------------------------------------------------------------------------------- 1 | # 单一职责原则(SRP:Single responsibility principle) 2 | 定义:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 3 | 4 | ### 单一职责原则的优点: 5 | * 可以降低类的复杂度,实现什么职责都有清晰明确的定义; 6 | * 提高类的可读性; 7 | * 提高系统的可维护性; 8 | * 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,一个接口修改只对相应地实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。 -------------------------------------------------------------------------------- /src/dp/com/company/srp/section1/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.srp.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * ҵ������� 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | IUserInfo userInfo = new UserInfo(); 12 | userInfo.changePassword("abc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/srp/section2/IUserInfo.java: -------------------------------------------------------------------------------- 1 | package com.company.srp.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IUserInfo extends IUserBiz, IUserBO { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/srp/section3/IPhone.java: -------------------------------------------------------------------------------- 1 | package com.company.srp.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * �绰�Ľӿ� 7 | */ 8 | public interface IPhone { 9 | 10 | //��ͨ�绰 11 | public void dial(String phoneNumber); 12 | 13 | //ͨ�� 14 | public void call(Object o); 15 | 16 | //��Ӧ��ֻ���Լ�˵����û�л�Ӧ������ɶ���� 17 | public void answer(Object o); 18 | 19 | //ͨ����ϣ��ҵ绰 20 | public void huangup(); 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/state/example/.emptyDir: -------------------------------------------------------------------------------- 1 | This file was generated by Together to prevent this folder from being deleted during synchronization with the CVS repositiory. Please do not delete this file. -------------------------------------------------------------------------------- /src/dp/com/company/state/example/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.state.example; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 模拟电梯的动作 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | Context context = new Context(); 12 | context.setLiftState(new ClosingState()); 13 | 14 | context.open(); 15 | context.close(); 16 | context.run(); 17 | context.stop(); 18 | context.open(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/state/section1/ILift.java: -------------------------------------------------------------------------------- 1 | package com.company.state.section1; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 定义一个电梯的接口 7 | */ 8 | public interface ILift { 9 | 10 | //首先电梯门开启动作 11 | public void open(); 12 | 13 | //电梯门有开启,那当然也就有关闭了 14 | public void close(); 15 | 16 | //电梯要能上能下,跑起来 17 | public void run(); 18 | 19 | //电梯还要能停下来,停不下来那就扯淡了 20 | public void stop(); 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/state/section4/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.state.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //定义环境角色 11 | Context context = new Context(); 12 | //初始化状态 13 | context.setCurrentState(new ConcreteState1()); 14 | //行为执行 15 | context.handle1(); 16 | context.handle2(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/state/section4/State.java: -------------------------------------------------------------------------------- 1 | package com.company.state.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class State { 8 | 9 | //定义一个环境角色,提供子类访问 10 | protected Context context; 11 | 12 | //设置环境角色 13 | public void setContext(Context _context){ 14 | this.context = _context; 15 | } 16 | 17 | //行为1 18 | public abstract void handle1(); 19 | 20 | //行为2 21 | public abstract void handle2(); 22 | } 23 | -------------------------------------------------------------------------------- /src/dp/com/company/state/state.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/state/state.jpg -------------------------------------------------------------------------------- /src/dp/com/company/strategy/example/BackDoor.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.strategy.example; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 找乔国老帮忙,使孙权不能杀刘备 10 | */ 11 | public class BackDoor implements IStrategy { 12 | 13 | public void operate() { 14 | System.out.println("找乔国老帮忙,让吴国太给孙权施加压力"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/example/BlockEnemy.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.strategy.example; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 孙夫人断后,挡住追兵 10 | */ 11 | public class BlockEnemy implements IStrategy { 12 | 13 | public void operate() { 14 | System.out.println("孙夫人断后,挡住追兵"); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/example/Context.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.strategy.example; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 计谋有了,那还要有锦囊 10 | */ 11 | public class Context { 12 | //构造函数,你要使用那个妙计 13 | private IStrategy straegy; 14 | public Context(IStrategy strategy){ 15 | this.straegy = strategy; 16 | } 17 | 18 | //使用计谋了,看我出招了 19 | public void operate(){ 20 | this.straegy.operate(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/example/GivenGreenLight.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.strategy.example; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 求吴国太开个绿灯 10 | */ 11 | public class GivenGreenLight implements IStrategy { 12 | 13 | 14 | public void operate() { 15 | System.out.println("求吴国太开个绿灯,放行!"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/example/IStrategy.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.company.strategy.example; 5 | 6 | /** 7 | * @author cbf4Life cbf4life@126.com 8 | * I'm glad to share my knowledge with you all. 9 | * 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 10 | * 11 | */ 12 | public interface IStrategy { 13 | 14 | //每个锦囊妙计都是一个可执行的算法 15 | public void operate(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //声明出一个具体的策略 11 | Strategy strategy = new ConcreteStrategy1(); 12 | //声明出上下文对象 13 | Context context = new Context(strategy); 14 | //执行封装后的方法 15 | context.doAnythinig(); 16 | } 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section2/ConcreteStrategy1.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteStrategy1 implements Strategy { 8 | 9 | public void doSomething() { 10 | System.out.println("具体策略1的运算法则"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section2/ConcreteStrategy2.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteStrategy2 implements Strategy { 8 | 9 | public void doSomething() { 10 | System.out.println("具体策略2的运算法则"); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section2/Context.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Context { 8 | //抽象策略 9 | private Strategy strategy = null; 10 | 11 | //构造函数设置具体策略 12 | public Context(Strategy _strategy){ 13 | this.strategy = _strategy; 14 | } 15 | 16 | //封装后的策略方法 17 | public void doAnythinig(){ 18 | this.strategy.doSomething(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section2/Strategy.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Strategy { 8 | 9 | //策略模式的运算法则 10 | public void doSomething(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section4/Calculator.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Calculator { 8 | //加符号 9 | private final static String ADD_SYMBOL = "+"; 10 | //减符号 11 | private final static String SUB_SYMBOL = "-"; 12 | 13 | public int exec(int a,int b,String symbol){ 14 | return symbol.equals(ADD_SYMBOL)?a+b:a-b; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section5/Add.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Add implements Calculator { 8 | //加法运算 9 | public int exec(int a, int b) { 10 | return a+b; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section5/Calculator.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | interface Calculator { 8 | 9 | public int exec(int a,int b); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section5/Context.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section5; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public class Context { 9 | 10 | 11 | private Calculator cal = null; 12 | 13 | public Context(Calculator _cal){ 14 | this.cal = _cal; 15 | } 16 | 17 | public int exec(int a,int b,String symbol){ 18 | return this.cal.exec(a, b); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/section5/Sub.java: -------------------------------------------------------------------------------- 1 | package com.company.strategy.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Sub implements Calculator { 8 | 9 | //减法 10 | public int exec(int a, int b) { 11 | return a-b; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/strategy/strategy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/strategy/strategy.jpg -------------------------------------------------------------------------------- /src/dp/com/company/template_method/game/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.template_method.game; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 客户开始使用这个模型 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | GameModel slto = new SltoModel(); 12 | slto.run(); 13 | 14 | GameModel pck3 = new Pck3Model(); 15 | pck3.run(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/template_method/section2/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.template_method.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 客户开始使用这个模型 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | //牛叉公司要H1型号的悍马 12 | HummerModel h1 = new HummerH1Model(); 13 | 14 | //H1模型演示 15 | h1.run(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/template_method/section3/ConcreteClass1.java: -------------------------------------------------------------------------------- 1 | package com.company.template_method.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteClass1 extends AbstractClass { 8 | 9 | //实现基本方法 10 | protected void doAnything() { 11 | //业务逻辑处理 12 | } 13 | 14 | protected void doSomething() { 15 | //业务逻辑处理 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/template_method/section3/ConcreteClass2.java: -------------------------------------------------------------------------------- 1 | package com.company.template_method.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteClass2 extends AbstractClass { 8 | 9 | //实现基本方法 10 | protected void doAnything() { 11 | //业务逻辑处理 12 | } 13 | 14 | protected void doSomething() { 15 | //业务逻辑处理 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/template_method/template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/template_method/template.jpg -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section2/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section2; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 访问者,我要去访问人家的数据了 7 | */ 8 | public interface IVisitor { 9 | 10 | //首先定义我可以访问普通员工 11 | public void visit(CommonEmployee commonEmployee); 12 | 13 | //其次定义,我还可以访问部门经理 14 | public void visit(Manager manager); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | 4 | /** 5 | * @author cbf4Life cbf4life@126.com 6 | * I'm glad to share my knowledge with you all. 7 | */ 8 | public class Client { 9 | 10 | public static void main(String[] args) { 11 | for(int i=0;i<10;i++){ 12 | //获得元素对象 13 | Element el = ObjectStruture.createElement(); 14 | //接受访问者访问 15 | el.accept(new Visitor()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/ConcreteElement1.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteElement1 extends Element{ 8 | 9 | //完善业务逻辑 10 | public void doSomething(){ 11 | //业务处理 12 | } 13 | 14 | //允许那个访问者访问 15 | public void accept(IVisitor visitor){ 16 | visitor.visit(this); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/ConcreteElement2.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class ConcreteElement2 extends Element{ 8 | 9 | //完善业务逻辑 10 | public void doSomething(){ 11 | //业务处理 12 | } 13 | 14 | //允许那个访问者访问 15 | public void accept(IVisitor visitor){ 16 | visitor.visit(this); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/Element.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class Element { 8 | /*#com.company.visitor.section3.IVisitor lnkIVisitor*/ 9 | //定义业务逻辑 10 | public abstract void doSomething(); 11 | 12 | //允许谁来访问 13 | public abstract void accept(IVisitor visitor); 14 | } 15 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface IVisitor { 8 | 9 | //可以访问哪些对象 10 | public void visit(ConcreteElement1 el1); 11 | 12 | public void visit(ConcreteElement2 el2); 13 | } 14 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section3/Visitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section3; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Visitor implements IVisitor { 8 | 9 | //访问el1元素 10 | public void visit(ConcreteElement1 el1) { 11 | el1.doSomething(); 12 | } 13 | 14 | //访问el2元素 15 | public void visit(ConcreteElement2 el2) { 16 | el2.doSomething(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section4/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section4; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 访问者,我要去访问人家的数据了 7 | */ 8 | public interface IVisitor { 9 | 10 | //首先定义我可以访问普通员工 11 | public void visit(CommonEmployee commonEmployee); 12 | 13 | //其次定义,我还可以访问部门经理 14 | public void visit(Manager manager); 15 | 16 | //统计所有员工工资总和 17 | public int getTotalSalary(); 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section5/IShowVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 负责展示报表的产生 7 | */ 8 | public interface IShowVisitor extends IVisitor { 9 | //展示报表 10 | public void report(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section5/ITotalVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 负责统计报表的产生 7 | */ 8 | public interface ITotalVisitor extends IVisitor { 9 | //统计所有员工工资总和 10 | public void totalSalary(); 11 | } 12 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section5/IVisitor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section5; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | * 访问者,我要去访问人家的数据了 7 | */ 8 | public interface IVisitor { 9 | 10 | //首先定义我可以访问普通员工 11 | public void visit(CommonEmployee commonEmployee); 12 | 13 | //其次定义,我还可以访问部门经理 14 | public void visit(Manager manager); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/AbsActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbsActor { 8 | //演员都能够演一个角色 9 | public void act(Role role){ 10 | System.out.println("演员可以扮演任何角色"); 11 | } 12 | //可以演功夫戏 13 | public void act(KungFuRole role){ 14 | System.out.println("演员都可以演功夫角色"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //定义一个演员 11 | AbsActor actor = new OldActor(); 12 | //定义一个角色 13 | Role role = new KungFuRole(); 14 | //开始演戏 15 | actor.act(role); 16 | actor.act(new KungFuRole()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/IdiotRole.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class IdiotRole implements Role { 8 | //一个弱智角色 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/KungFuRole.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class KungFuRole implements Role { 8 | //武功天子第一的角色 9 | } 10 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/OldActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class OldActor extends AbsActor { 8 | //不演功夫角色 9 | public void act(KungFuRole role){ 10 | System.out.println("年龄大了,不能演功夫角色"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/Role.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Role { 8 | //演员要扮演的角色 9 | } 10 | 11 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section6/YoungActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section6; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class YoungActor extends AbsActor { 8 | //年轻演员最喜欢演功夫戏 9 | public void act(KungFuRole role){ 10 | System.out.println("最喜欢演功夫角色"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/AbsActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public abstract class AbsActor { 8 | //演员都能够演一个角色 9 | public void act(Role role){ 10 | System.out.println("演员可以扮演任何角色"); 11 | } 12 | //可以演功夫戏 13 | public void act(KungFuRole role){ 14 | System.out.println("演员都可以演功夫角色"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/Client.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class Client { 8 | 9 | public static void main(String[] args) { 10 | //定义一个演员 11 | AbsActor actor = new OldActor(); 12 | //定义一个角色 13 | Role role = new KungFuRole(); 14 | //开始演戏 15 | role.accept(actor); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/IdiotRole.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class IdiotRole implements Role { 8 | //一个弱智角色,然谁来扮演 9 | public void accept(AbsActor actor){ 10 | actor.act(this); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/KungFuRole.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class KungFuRole implements Role { 8 | //武功天子第一的角色 9 | public void accept(AbsActor actor){ 10 | actor.act(this); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/OldActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class OldActor extends AbsActor { 8 | //不演功夫角色 9 | public void act(KungFuRole role){ 10 | System.out.println("年龄大了,不能演功夫角色"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/Role.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public interface Role { 8 | //演员要扮演的角色 9 | public void accept(AbsActor actor); 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/section7/YoungActor.java: -------------------------------------------------------------------------------- 1 | package com.company.visitor.section7; 2 | 3 | /** 4 | * @author cbf4Life cbf4life@126.com 5 | * I'm glad to share my knowledge with you all. 6 | */ 7 | public class YoungActor extends AbsActor { 8 | //年轻演员最喜欢演功夫戏 9 | public void act(KungFuRole role){ 10 | System.out.println("最喜欢演功夫角色"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/dp/com/company/visitor/visitor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivance/DPModel/9a1221f20e9c2ff5e63e9fdd76d210c18355a58b/src/dp/com/company/visitor/visitor.jpg --------------------------------------------------------------------------------