Design Patterns & Refactoring
文章推薦指數: 80 %
Hello, world! I'm SourceMaking. I will tell you a lot of stories about good software architecture and teach you how to create it with design patterns. 🤖📘🍻Hooray!After3yearsofwork,we'vefinallyreleasedanewebookondesignpatterns!Checkitout» DesignPatterns&Refactoring Hello,world! I'mSourceMaking.Iwilltellyoualotofstoriesaboutgoodsoftwarearchitectureandteachyouhowto create itwithdesignpatterns.Iwillguideyouthroughanti-patterns, commonpitfallsandmistakesthatpeoplemakewhentheyplan,create,andmanagesoftwareprojects.Inthe end, Iwillteachyouhowtosmellabadcodeandimproveitwithrefactoring. Wecanstartfromtheverybeginningoryoucanpickatopicofinterest below. DesignPatterns Patternsarehigher-orderdesigns,whichoccurrepeatedlyinobject-orienteddesign.Theyhavebeen formalized,andaregenerallyconsideredagooddevelopmentpractice. Antipatterns Antipatternsdescribecommonmistakes,errors,andpeopleissuesthatcancauseasoftwareprojectto fail. Refactoring Refactoringisadisciplinedtechniqueforrestructuringanexistingbodyofcode, alteringitsinternalstructurewithoutchangingitsexternalbehavior. UML UnifiedModelingLanguagemakesitpossibletodescribesystemswithwordsandpictures.Especially notableusecasediagramswiththeirstickfiguresorthewidelyusedclassdiagrams. Facebook Twitter Contactus Login PremiumStuff DiveIntoDesignPatterns DiveIntoRefactoring ComputerScienceDistilled DesignPatterns Creationalpatterns AbstractFactoryDesignPattern BuilderDesignPattern FactoryMethodDesignPattern ObjectPoolDesignPattern PrototypeDesignPattern SingletonDesignPattern Structuralpatterns AdapterDesignPattern BridgeDesignPattern CompositeDesignPattern DecoratorDesignPattern FacadeDesignPattern FlyweightDesignPattern PrivateClassData ProxyDesignPattern Behavioralpatterns ChainofResponsibility CommandDesignPattern InterpreterDesignPattern IteratorDesignPattern MediatorDesignPattern MementoDesignPattern NullObjectDesignPattern ObserverDesignPattern StateDesignPattern StrategyDesignPattern TemplateMethodDesignPattern VisitorDesignPattern AntiPatterns SoftwareDevelopmentAntiPatterns TheBlob ContinuousObsolescence LavaFlow AmbiguousViewpoint FunctionalDecomposition Poltergeists BoatAnchor GoldenHammer DeadEnd SpaghettiCode InputKludge WalkingthroughaMinefield Cut-And-PasteProgramming MushroomManagement SoftwareArchitectureAntiPatterns AutogeneratedStovepipe StovepipeEnterprise Jumble StovepipeSystem CoverYourAssets VendorLock-In WolfTicket ArchitectureByImplication WarmBodies DesignByCommittee SwissArmyKnife ReinventTheWheel TheGrandOldDukeofYork ProjectManagementAntiPatterns BlowhardJamboree AnalysisParalysis ViewgraphEngineering DeathByPlanning FearofSuccess Corncob IntellectualViolence IrrationalManagement SmokeandMirrors ProjectMismanagement ThrowItovertheWall FireDrill TheFeud E-mailIsDangerous Refactoring CodeSmells Bloaters LongMethod LargeClass PrimitiveObsession LongParameterList DataClumps Object-OrientationAbusers SwitchStatements TemporaryField RefusedBequest AlternativeClasseswithDifferentInterfaces ChangePreventers DivergentChange ShotgunSurgery ParallelInheritanceHierarchies Dispensables Comments DuplicateCode LazyClass DataClass DeadCode SpeculativeGenerality Couplers FeatureEnvy InappropriateIntimacy MessageChains MiddleMan OtherSmells IncompleteLibraryClass Refactoringtechniques ComposingMethods ExtractMethod InlineMethod ExtractVariable InlineTemp ReplaceTempwithQuery SplitTemporaryVariable RemoveAssignmentstoParameters ReplaceMethodwithMethodObject SubstituteAlgorithm MovingFeaturesbetweenObjects MoveMethod MoveField ExtractClass InlineClass HideDelegate RemoveMiddleMan IntroduceForeignMethod IntroduceLocalExtension OrganizingData SelfEncapsulateField ReplaceDataValuewithObject ChangeValuetoReference ChangeReferencetoValue ReplaceArraywithObject DuplicateObservedData ChangeUnidirectionalAssociationtoBidirectional ChangeBidirectionalAssociationtoUnidirectional ReplaceMagicNumberwithSymbolicConstant EncapsulateField EncapsulateCollection ReplaceTypeCodewithClass ReplaceTypeCodewithSubclasses ReplaceTypeCodewithState/Strategy ReplaceSubclasswithFields SimplifyingConditionalExpressions DecomposeConditional ConsolidateConditionalExpression ConsolidateDuplicateConditionalFragments RemoveControlFlag ReplaceNestedConditionalwithGuardClauses ReplaceConditionalwithPolymorphism IntroduceNullObject IntroduceAssertion SimplifyingMethodCalls RenameMethod AddParameter RemoveParameter SeparateQueryfromModifier ParameterizeMethod ReplaceParameterwithExplicitMethods PreserveWholeObject ReplaceParameterwithMethodCall IntroduceParameterObject RemoveSettingMethod HideMethod ReplaceConstructorwithFactoryMethod ReplaceErrorCodewithException ReplaceExceptionwithTest DealingwithGeneralisation PullUpField PullUpMethod PullUpConstructorBody PushDownMethod PushDownField ExtractSubclass ExtractSuperclass ExtractInterface CollapseHierarchy FormTemplateMethod ReplaceInheritancewithDelegation ReplaceDelegationwithInheritance UML Introduction BasicPrinciplesandBackground IntroductiontotheCaseStudy Models,Views,andDiagrams InformationSystemsandITSystems TheModelsofourCaseStudy HistoryofUML:MethodsandNotations RequirementSpecification UML2.0 ModelingBusinessSystems BusinessProcessesandBusinessSystems OneModel—TwoViews ExternalView TheElementsofaView UseCaseDiagrams ConstructingUseCaseDiagrams ActivityDiagrams ConstructingActivityDiagrams SequenceDiagrams ConstructingSequenceDiagrams High-LevelSequenceDiagrams SequenceDiagramsforScenariosofBusinessUseCases InternalView PackageDiagram ConstructingPackageDiagrams ClassDiagram ConstructingClassDiagrams ActivityDiagram ModelingITSystems ExternalView TheUserViewor"Idon’tcarehowitworks,aslongasitworks." TheElementsofaView UseCaseDiagram QueryEventsandMutationEvents UseCaseSequenceDiagram ConstructingtheExternalView StructuralView ObjectsandClasses Generalization,Specialization,andInheritance StaticandDynamicBusinessRules ElementsoftheView ClassDiagram ConstructingClassDiagrams TheBehavioralView TheLifeofanObject TheElementsoftheView StatechartDiagram ConstructingStatechartDiagrams InteractionView SeeingWhatHappensInsidetheITSystem ElementsoftheView CommunicationDiagram SequenceDiagram ConstructingCommunicationDiagrams ConstructingSequenceDiagrams ModelingforSystemIntegration TerminologyofSystemIntegration MessagesinUML OneModel—TwoViews ProcessView TheBusinessSystemModelasFoundation ElementsoftheView ActivityDiagrams SequenceDiagram ConstructingDiagramsintheProcessView TheStaticView ElementsoftheView ClassDiagram ConstructingClassDiagrams TransformingDatafromtheITSystemtotheMessage"passengerlist" TransformationofUMLMessagesintoVariousStandardFormats Login Feedback
延伸文章資訊
- 1Introduction to Design Patterns: Why they're worth learning
the writings of Alexander Shvets on refactoring.guru. The author has created an amazing resource ...
- 2How to Learn Design Patterns | scraggo.com
It's a Creational pattern of low complexity. (refactoring.guru also gives it a medium rating in t...
- 3Design Patterns & Refactoring
Hello, world! I'm SourceMaking. I will tell you a lot of stories about good software architecture...
- 4Why are there different ways to describe same design pattern ...
refactoring guru is also a good choice. They opted to use interfaces instead of abstract classes,...
- 5Design Pattern guru · GitBook - Introduction
design pattern by guru. 设计模式概念最初是由四人组系统提出的,在面向对象编程过程中总结出来的一套设计方法论。 The idea was picked up by four...