├── .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
--------------------------------------------------------------------------------