您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 23种java设计模式
java:23JAVA231FactorySingletonPrototype2FlyweightBridgeDecoratorCompositeAdapterProxyFacade3IteratorTemplateChainofResponsibilityMementoMediatorInterpreterStrategyStateObserverVisitorCommandFactory:.?,Jive,JavanewClassAa=newA()newSampleSample:Samplesample=newSample();sample,Sample:Samplesample=newSample();sampleRefactorJava(Encapsulation)(Delegation)“”“”(),SampleFactorynewSample(),SampleMySample,,Sample.Sample,MySampleHisSample.,:Samplemysample=newMySample();Samplehissample=newHisSample();,Sample,,,:..,.Sample:publicclassFactory{publicstaticSamplecreator(intwhich){//getClassSampleif(which==1)returnnewSampleA();elseif(which==2)returnnewSampleB();}},Sample.SamplesampleA=Factory.creator(1);,Sample,,,:,.,,,,.?.Sample,Sample,SampleA,factorySampleSampleconcreteFactory:(FactoryMethod)(AbstractFactory).,Sample,Sample2.SampleconcreteSampleASamleBSample2concreteSample2ASampleB2Factory,,Factory:publicabstractclassFactory{publicabstractSamplecreator();publicabstractSample2creator(Stringname);}publicclassSimpleFactoryextendsFactory{publicSamplecreator(){.........returnnewSampleA}publicSample2creator(Stringname){.........returnnewSample2A}}publicclassBombFactoryextendsFactory{publicSamplecreator(){......returnnewSampleB}publicSample2creator(Stringname){......returnnewSample2B}}SampleSample2,SampleSample2?SimpleFactorySampleSample2SimpleFactory?XML:NAMESPACEPREFIX=O/O:P/O:PJiveForumFactorySingleton:publicabstractclassForumFactory{privatestaticObjectinitLock=newObject();privatestaticStringclassName=com.jivesoftware.forum.database.DbForumFactory;privatestaticForumFactoryfactory=null;publicstaticForumFactorygetInstance(Authorizationauthorization){//Ifnovalidauthorizationpassedin,returnnull.if(authorization==null){returnnull;}//Singletonif(factory==null){synchronized(initLock){if(factory==null){......try{//Classc=Class.forName(className);factory=(ForumFactory)c.newInstance();}catch(Exceptione){returnnull;}}}}//Now,proxy.forumreturnnewForumFactoryProxy(authorization,factory,factory.getPermissions(authorization));}//forumforumfactory.publicabstractForumcreateForum(Stringname,Stringdescription)throwsUnauthorizedException,ForumAlreadyExistsException;....}Jive,,ForumFactory:privatestaticStringclassName=com.jivesoftware.forum.database.DbForumFactory;forumcom.jivesoftware.forum.database.DbForumFactory.,,Singleton,proxy,proxyforum,forum:guest,,,proxy,,.JavaCatalogDAOFactory:publicclassCatalogDAOFactory{/***DAO*J2EE*/publicstaticCatalogDAOgetDAO()throwsCatalogDAOSysException{CatalogDAOcatDao=null;try{InitialContextic=newInitialContext();//CATALOG_DAO_CLASS//CATALOG_DAO_CLASS//StringclassName=(String)ic.lookup(JNDINames.CATALOG_DAO_CLASS);catDao=(CatalogDAO)Class.forName(className).newInstance();}catch(NamingExceptionne){thrownewCatalogDAOSysException(CatalogDAOFactory.getDAO:NamingExceptionwhilegettingDAOtype:\n+ne.getMessage());}catch(Exceptionse){thrownewCatalogDAOSysException(CatalogDAOFactory.getDAO:ExceptionwhilegettingDAOtype:\n+se.getMessage());}returncatDao;}}CatalogDAOFactorycatDaoclassNameCatalogDAOFactoryJavacatalogCATALOG_DAO_CLASSSingleton():SingletonJavaClass,singleton;synchronize1SingletonSingletonSingletonJavagarbagecollection(classloader)Singleton,?Singleton:publicclassSingleton{privateSingleton(){}////privateprivatestaticSingletoninstance=newSingleton();//classpublicstaticSingletongetInstance(){returninstance;}}:publicclassSingleton{privatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance(){////if(instance==null)instancenewSingleton();returninstance;}}Singleton.getInstance()lazyinitializationSingletonlazyinitializationsynchronizedsynchronizedsynchronizedgetInstance()SingletonlazyinitializationSingletondouble-checkedlocking(DCL)SingletonSingletonSingletonSingletonEJBEJBJVMSUN(PetStore1.3.1)ServiceLocatorPetStoreServiceLocatorEJBWEBServiceLocatorEJBServiceLocatorWEBServiceLocatorSingletonServiceLocatorSingletonEJBSingletonServiceLocatorWEBEJBSingletonJavaSingletonBuilderBuilder:,.Builder,..Builder,.?.:.,,,:,,,,(),Builder.?,Builder,BuilderDirector.,,:publicinterfaceBuilder{//AvoidbuildPartA();//BvoidbuildPartB();//CvoidbuildPartC();//()//,Director.//ProductgetResult();}Director,Builder(),Director:publicclassDirector{privateBuilderbuilder;publicDirector(Builderbuilder){this.builder=builder;}//partApartBpartC//publicvoidconstruct(){builder.buildPartA();builder.buildPartB();builder.buildPartC();}}BuilderConcreteBuilder:Builder;;:publicclassConcreteBuilderimplementsBuilder{PartpartA,partB,partC;publicvoidbuildPartA(){//partA};publicvoidbuildPartB(){//partB};publicvoidbuildPartC(){//partB};publicProductgetResult(){//};}:Product:publicinterfaceProduct{}:publicinterfacePart{}Builder:ConcreteBuilderbuilder=newConcreteBuilder();Directordirector=newDirector(builder);director.construct();Productproduct=builder.getResult();BuilderJava,(Pool),,,.,(,),,,.BuilderDirector,.Prototype:,.Prototype,:?Javaclone(),Prototype.publicabstractclassAbstractSpoonimplementsCloneable{StringspoonName;publicvoidsetSpoonNam
本文标题:23种java设计模式
链接地址:https://www.777doc.com/doc-4486247 .html