Design Pattern detection using Similarity Scoring

Related Papers

Installation

Usage

Proxy Variation

The design pattern reported by the tool as Proxy2 is actually a variation of Proxy pattern.

However, this Proxy variation is structurally more similar to Decorator pattern than Proxy pattern, since Proxy role has an association to Subject role (named subject) and method Request() declared in Proxy invokes an abstract method having the same signature through subject association (as exactly happens between Decorator and Component roles in Decorator pattern).
The differences between Decorator pattern and this Proxy variation are: a) Decorator role is abstract while Proxy role is concrete, b) Proxy role initializes its association to Subject role with a reference to an object of RealSubject role which is instantiated inside the constructor of Proxy role.

This kind of Proxy variation has been reported by Gunter Kniesel and Alex Binun from University of Bonn.

Proxy Variation

ChangeLog

Detected Design Patterns in JHotDraw 5.1

Design Pattern Name Roles and Corresponding Classes
* Last updated on March 4th 2016
Object Adapter-
Command
Adapter/ConcreteCommand Adaptee/Receiver
CH.ifa.draw.standard.AbstractFigure
adaptee: FigureChangeListener fListener
Request(): release, invalidate, changed
Target role is played by class CH.ifa.draw.framework.Figure
CH.ifa.draw.framework.FigureChangeListener
SpecificRequest(): figureRemoved, figureInvalidated, figureChanged
CH.ifa.draw.figures.RadiusHandle
adaptee: RoundRectangleFigure fOwner
Request(): locate
Target role is played by class CH.ifa.draw.standard.AbstractHandle
CH.ifa.draw.figures.RoundRectangleFigure
SpecificRequest(): getArc, displayBox
CH.ifa.draw.figures.GroupCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionZOrdered, drawing, clearSelection, addToSelection(Figure), checkDamage
CH.ifa.draw.figures.InsertImageCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): lastClick, add(Figure), clearSelection, addToSelection(Figure), checkDamage
CH.ifa.draw.figures.UngroupCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionElements, clearSelection, drawing, addToSelection(Figure), checkDamage
CH.ifa.draw.standard.AlignCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionElements, checkDamage
CH.ifa.draw.standard.BringToFrontCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionZOrdered, drawing, checkDamage
CH.ifa.draw.standard.ChangeAttributeCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionElements, checkDamage
CH.ifa.draw.standard.SendToBackCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): selectionZOrdered, drawing, checkDamage
CH.ifa.draw.standard.ToggleGridCommand
receiver: DrawingView fView
Execute(): execute
Command role is played by class CH.ifa.draw.util.Command
CH.ifa.draw.framework.DrawingView
Action(): getConstrainer, setConstrainer(PointConstrainer)
CH.ifa.draw.figures.TextFigure
adaptee: OffsetLocator fLocator
Request(): moveBy
Target role is played by class CH.ifa.draw.standard.AbstractFigure
CH.ifa.draw.standard.OffsetLocator
SpecificRequest(): moveBy
CH.ifa.draw.standard.AbstractTool
adaptee: DrawingView fView
Request(): activate, deactivate
Target role is played by class CH.ifa.draw.framework.Tool
CH.ifa.draw.framework.DrawingView
SpecificRequest(): clearSelection, setCursor(Cursor)
CH.ifa.draw.figures.LineConnection
adaptee: Connector fStart, Connector fEnd
Request(): updateConnection
Target role is played by class CH.ifa.draw.framework.ConnectionFigure
CH.ifa.draw.framework.Connector
SpecificRequest(): findStart(ConnectionFigure), findEnd(ConnectionFigure)
CH.ifa.draw.applet.DrawApplet
adaptee: ToolButton fDefaultToolButton
Request(): toolDone
Target role is played by class CH.ifa.draw.framework.DrawingEditor
adaptee: ToolButton fSelectedToolButton
Request(): paletteUserOver
Target role is played by class CH.ifa.draw.util.PaletteListener
CH.ifa.draw.standard.ToolButton
SpecificRequest(): name, tool
CH.ifa.draw.application.DrawApplication
adaptee: ToolButton fDefaultToolButton
Request(): toolDone
Target role is played by class CH.ifa.draw.framework.DrawingEditor
adaptee: ToolButton fSelectedToolButton
Request(): paletteUserOver
Target role is played by class CH.ifa.draw.util.PaletteListener
CH.ifa.draw.standard.ToolButton
SpecificRequest(): name, tool
CH.ifa.draw.standard.StandardDrawingView
adaptee: Drawing fDrawing
Request(): drawDrawing, setDrawing
Target role is played by class CH.ifa.draw.framework.DrawingView
adaptee: Drawing drawing()
Request(): add(Figure), remove(Figure), freezeView, unfreezeView, selectionZOrdered
CH.ifa.draw.framework.Drawing
SpecificRequest(): draw, removeDrawingChangeListener, addDrawingChangeListener
SpecificRequest(): add(Figure), remove(Figure), lock, unlock, figures
CH.ifa.draw.standard.StandardDrawingView
adaptee: DrawingEditor fEditor
Request(): tool
Target role is played by class CH.ifa.draw.framework.DrawingView
CH.ifa.draw.framework.DrawingEditor
SpecificRequest(): tool
CH.ifa.draw.contrib.PolygonHandle
adaptee: Locator fLocator
Request(): locate
Target role is played by class CH.ifa.draw.standard.AbstractHandle
CH.ifa.draw.framework.Locator
SpecificRequest(): locate(Figure)
CH.ifa.draw.standard.LocatorHandle
adaptee: Locator fLocator
Request(): locate
Target role is played by class CH.ifa.draw.standard.AbstractHandle
CH.ifa.draw.framework.Locator
SpecificRequest(): locate(Figure)
CH.ifa.draw.standard.ToolButton
adaptee: PaletteIcon fIcon
Request(): paintNormal, paintPressed, paintSelected
Target role is played by class CH.ifa.draw.util.PaletteButton
CH.ifa.draw.util.PaletteIcon
SpecificRequest(): normal, pressed, selected
CH.ifa.draw.standard.StandardDrawingView
adaptee: Painter fUpdateStrategy
Request(): paint(Graphics)
Target role is played by class CH.ifa.draw.framework.DrawingView
CH.ifa.draw.framework.Painter
SpecificRequest(): draw(Graphics, DrawingView)
CH.ifa.draw.standard.ReverseFigureEnumerator
adaptee: ReverseVectorEnumerator fEnumeration
Request(): hasMoreElements, nextElement, nextFigure
Target role is played by class CH.ifa.draw.framework.FigureEnumeration
CH.ifa.draw.util.ReverseVectorEnumerator
SpecificRequest(): hasMoreElements, nextElement
Composite Component Composite
CH.ifa.draw.framework.Figure CH.ifa.draw.standard.CompositeFigure
children: Vector fFigures
Add(Component): add(Figure)
Remove(Component): remove(Figure)
Operation(): draw
Decorator Component Decorator
CH.ifa.draw.framework.Locator CH.ifa.draw.standard.OffsetLocator
component: Locator fBase
Operation(): locate(Figure)
CH.ifa.draw.framework.Figure CH.ifa.draw.standard.DecoratorFigure
component: Figure fComponent
Operation(): displayBox, basicDisplayBox, draw, handles
(connectionInsets, canConnect, containsPoint, findFigureInside, includes, moveBy, release, figures, decompose, setAttribute, getAttribute, connectedTextLocator, connectorAt, connectorVisibility)
CH.ifa.draw.framework.Tool CH.ifa.draw.standard.SelectionTool
component: Tool fChild
Operation(): mouseDown, mouseDrag, mouseUp
Factory Method Creator
CH.ifa.draw.framework.DrawingView
FactoryMethod(): selectionElements, getFigureSelection
ConcreteCreator role is played by class CH.ifa.draw.standard.StandardDrawingView
CH.ifa.draw.framework.Figure
FactoryMethod(): figures, decompose, connectorAt
ConcreteCreator role is played by class CH.ifa.draw.standard.AbstractFigure
Observer Subject Observer
CH.ifa.draw.standard.StandardDrawing
observers: Vector fListeners
Attach(Observer): addDrawingChangeListener
Detach(Observer): removeDrawingChangeListener
Notify(): figureInvalidated, figureRequestUpdate
CH.ifa.draw.framework.DrawingChangeListener
Update(): drawingInvalidated, drawingRequestUpdate
CH.ifa.draw.standard.StandardDrawingView
observers: Vector fBackgrounds, Vector fForegrounds
Attach(Observer): addBackground, addForeground
Detach(Observer): removeBackground, removeForeground
Notify(): drawAll -> drawPainters
CH.ifa.draw.framework.Painter
Update(): draw
CH.ifa.draw.standard.StandardDrawingView
observers: Vector fSelection
Attach(Observer): addToSelection
Detach(Observer): removeFromSelection
Notify(): keyPressed -> handleCursorKey -> moveSelection
CH.ifa.draw.framework.Figure
Update(): moveBy
Prototype Client Prototype
CH.ifa.draw.standard.ConnectionHandle
prototype: ConnectionFigure fPrototype
Operation(): createConnection
CH.ifa.draw.framework.Figure
CH.ifa.draw.standard.ConnectionTool
prototype: ConnectionFigure fPrototype
Operation(): createConnection
CH.ifa.draw.framework.Figure
CH.ifa.draw.standard.CreationTool
prototype: Figure fPrototype
Operation(): createFigure
CH.ifa.draw.framework.Figure
Singleton Singleton
CH.ifa.draw.util.Clipboard
uniqueInstance: static Clipboard fgClipboard
CH.ifa.draw.util.Iconkit
uniqueInstance: static Iconkit fgIconkit
Instance(): instance
State-Strategy Context State/Strategy
CH.ifa.draw.standard.AbstractFigure CH.ifa.draw.framework.FigureChangeListener
CH.ifa.draw.standard.ChangeConnectionHandle
CH.ifa.draw.standard.ConnectionHandle
CH.ifa.draw.framework.Figure
CH.ifa.draw.figures.GroupCommand
CH.ifa.draw.figures.InsertImageCommand
CH.ifa.draw.figures.UngroupCommand
CH.ifa.draw.standard.AlignCommand
CH.ifa.draw.standard.BringToFrontCommand
CH.ifa.draw.standard.ChangeAttributeCommand
CH.ifa.draw.standard.FigureTransferCommand
CH.ifa.draw.standard.SendToBackCommand
CH.ifa.draw.standard.ToggleGridCommand
CH.ifa.draw.framework.DrawingView
CH.ifa.draw.applet.DrawApplet
CH.ifa.draw.application.DrawApplication
CH.ifa.draw.framework.Tool
CH.ifa.draw.standard.ChangeConnectionHandle
CH.ifa.draw.standard.ConnectionHandle
CH.ifa.draw.framework.ConnectionFigure
CH.ifa.draw.standard.AbstractTool CH.ifa.draw.framework.DrawingView
CH.ifa.draw.standard.ConnectionTool
CH.ifa.draw.standard.CreationTool
CH.ifa.draw.framework.Figure
CH.ifa.draw.figures.LineConnection CH.ifa.draw.framework.Connector
CH.ifa.draw.util.CommandButton CH.ifa.draw.util.Command
CH.ifa.draw.util.PaletteButton CH.ifa.draw.util.PaletteListener
CH.ifa.draw.standard.StandardDrawingView CH.ifa.draw.framework.Drawing
CH.ifa.draw.standard.StandardDrawingView CH.ifa.draw.framework.DrawingEditor
CH.ifa.draw.standard.ConnectionTool CH.ifa.draw.framework.ConnectionFigure
CH.ifa.draw.contrib.PolygonHandle
CH.ifa.draw.standard.LocatorHandle
CH.ifa.draw.framework.Locator
CH.ifa.draw.samples.javadraw.Animator CH.ifa.draw.framework.DrawingView
CH.ifa.draw.applet.DrawApplet
CH.ifa.draw.application.DrawApplication
CH.ifa.draw.framework.Drawing
CH.ifa.draw.standard.StandardDrawingView CH.ifa.draw.framework.Painter
CH.ifa.draw.figures.TextTool CH.ifa.draw.standard.TextHolder
CH.ifa.draw.figures.PolyLineFigure CH.ifa.draw.figures.LineDecoration
CH.ifa.draw.standard.ChangeConnectionHandle CH.ifa.draw.framework.Connector
CH.ifa.draw.standard.StandardDrawingView CH.ifa.draw.framework.PointConstrainer
CH.ifa.draw.standard.HandleTracker CH.ifa.draw.framework.Handle
CH.ifa.draw.standard.ConnectionTool CH.ifa.draw.framework.Connector
CH.ifa.draw.standard.LocatorConnector CH.ifa.draw.framework.Locator
CH.ifa.draw.samples.javadraw.Animator CH.ifa.draw.util.Animatable
Template Method AbstractClass
CH.ifa.draw.standard.AbstractFigure
TemplateMethod(): moveBy, displayBox(Point, Point), size, containsPoint, invalidate, center
PrimitiveOperation(): basicMoveBy, basicDisplayBox, displayBox()
moveBy -> {basicMoveBy }
displayBox(Point origin, Point corner) -> {basicDisplayBox }
size, containsPoint, invalidate, center -> {displayBox() }
CH.ifa.draw.standard.AbstractHandle
TemplateMethod(): displayBox
PrimitiveOperation(): locate
CH.ifa.draw.standard.ActionTool
TemplateMethod(): mouseDown
PrimitiveOperation(): action
CH.ifa.draw.standard.ChangeConnectionHandle
TemplateMethod(): source, invokeStart, invokeStep, invokeEnd
PrimitiveOperation(): target, disconnect, connect, setPoint
source -> {target }
invokeStart -> {target, disconnect }
invokeStep -> {setPoint }
invokeEnd -> {setPoint, connect }
CH.ifa.draw.util.PaletteButton
TemplateMethod(): paint
PrimitiveOperation(): paintBackground, paintPressed, paintSelected, paintNormal


Detected Design Patterns in JRefactory 2.6.24

Design Pattern Name Roles and Corresponding Classes
* Last updated on March 4th 2016
Object Adapter-
Command
Adapter/ConcreteCommand Adaptee/Receiver
org.acm.seguin.refactor.type.ExtractInterfaceRefactoring org.acm.seguin.refactor.ComplexTransform
org.acm.seguin.refactor.EliminatePackageImportVisitor org.acm.seguin.summary.PackageSummary
org.acm.seguin.refactor.type.RemoveEmptyClassRefactoring org.acm.seguin.summary.TypeSummary
org.acm.seguin.refactor.method.RenameParameterRefactoring org.acm.seguin.summary.MethodSummary
org.acm.seguin.refactor.AddImportTransform org.acm.seguin.parser.ast.ASTName
org.acm.seguin.refactor.type.ChangePackageTransform org.acm.seguin.parser.ast.ASTName
org.acm.seguin.pretty.PrettyPrintVisitor org.acm.seguin.pretty.FieldSizeLookAhead
org.acm.seguin.pretty.PrettyPrintVisitor org.acm.seguin.pretty.LocalVariableLookAhead
org.acm.seguin.uml.refactor.ExtractMethodDialog org.acm.seguin.refactor.method.ExtractMethodRefactoring
org.acm.seguin.uml.refactor.ExtractMethodDialog org.acm.seguin.awt.OrderableList
org.acm.seguin.uml.refactor.MoveMethodDialog org.acm.seguin.uml.refactor.ParameterPanel
org.acm.seguin.tools.stub.StubGenTraversal org.acm.seguin.tools.stub.StubFile
org.acm.seguin.print.text.TextPagePrinter org.acm.seguin.print.text.LineSet
org.acm.seguin.uml.refactor.RenameParameterDialog org.acm.seguin.summary.MethodSummary
org.acm.seguin.uml.refactor.RenameClassDialog org.acm.seguin.summary.TypeSummary
org.acm.seguin.uml.UMLPackage org.acm.seguin.uml.line.SegmentedLine
org.acm.seguin.uml.print.UMLPagePrinter org.acm.seguin.uml.UMLPackage
org.acm.seguin.summary.SummaryTraversal org.acm.seguin.summary.load.LoadStatus
org.acm.seguin.metrics.GatherData org.acm.seguin.metrics.MetricsReport
org.acm.seguin.print.text.TextPagePrinter org.acm.seguin.print.text.LinePrinter
org.acm.seguin.summary.load.SwingLoadStatus org.acm.seguin.tools.install.RefactoryStorage
org.acm.seguin.metrics.MethodMetricsFrame org.acm.seguin.summary.MethodSummary
org.acm.seguin.metrics.PackageMetricsFrame org.acm.seguin.summary.PackageSummary
org.acm.seguin.metrics.TypeMetricsFrame org.acm.seguin.summary.TypeSummary
org.acm.seguin.uml.UMLPackage org.acm.seguin.summary.PackageSummary
Factory Method Creator
org.acm.seguin.refactor.type.TypeChangeVisitor
FactoryMethod(): getFileSpecificTransform, getNewImports, getRemoveImportTransform
ConcreteCreator role is played by classes EliminatePackageImportVisitor, MoveClassVisitor, RenameClassVisitor
Observer Subject Observer
org.acm.seguin.refactor.ComplexTransform
observers: ArrayList transforms
Attach(Observer): add(TransformAST)
Detach(): clear
Notify(): apply
org.acm.seguin.refactor.TransformAST
Update(): update
Singleton Singleton
org.acm.seguin.ide.command.PackageSelectorPanel
uniqueInstance: static PackageSelectorPanel mainPanel
Instance(): getMainPanel
org.acm.seguin.ide.common.action.CurrentSummary
uniqueInstance: static CurrentSummary singleton
Instance(): get
org.acm.seguin.ide.common.EditorOperations
uniqueInstance: static EditorOperations singleton
Instance(): get
org.acm.seguin.ide.common.PackageListFilter
uniqueInstance: static PackageListFilter singleton
Instance(): get
org.acm.seguin.ide.common.SourceBrowser
uniqueInstance: static SourceBrowser singleton
Instance(): get
org.acm.seguin.ide.jbuilder.RefactoryNodeViewerFactory
uniqueInstance: static RefactoryNodeViewerFactory factory
Instance(): getFactory
org.acm.seguin.ide.jbuilder.UMLNodeViewerFactory
uniqueInstance: static UMLNodeViewerFactory factory
Instance(): getFactory
org.acm.seguin.pretty.ai.RequiredTags
uniqueInstance: static RequiredTags tags
Instance(): getTagger
org.acm.seguin.refactor.RefactoringFactory
uniqueInstance: static RefactoringFactory singleton
Instance(): get
org.acm.seguin.refactor.undo.UndoStack
uniqueInstance: static UndoStack singleton
Instance(): get
org.acm.seguin.uml.line.LabelSizeComputation
uniqueInstance: static LabelSizeComputation singleton
Instance(): get
org.acm.seguin.version.VersionControlCache
uniqueInstance: static VersionControlCache ssc
Instance(): getCache
State-
Strategy
Context State/Strategy
org.acm.seguin.refactor.method.EMParameterFinder org.acm.seguin.parser.Node
org.acm.seguin.refactor.method.MoveMethodRefactoring org.acm.seguin.summary.Summary
org.acm.seguin.refactor.method.MoveMethodVisitor org.acm.seguin.summary.Summary
org.acm.seguin.uml.line.DragPanelAdapter org.acm.seguin.uml.line.EndPointPanel
org.acm.seguin.uml.SaveMenuSelection org.acm.seguin.io.Saveable
org.acm.seguin.uml.line.DragPanelAdapter org.acm.seguin.uml.line.LinedPanel
org.acm.seguin.uml.line.LineMouseAdapter org.acm.seguin.uml.line.LinedPanel
org.acm.seguin.ide.common.SourceBrowserAdapter org.acm.seguin.uml.ISourceful
org.acm.seguin.uml.loader.ReloaderSingleton org.acm.seguin.uml.loader.Reloader
org.acm.seguin.refactor.method.ExtractMethodRefactoring org.acm.seguin.parser.Node
org.acm.seguin.ide.common.action.RefactoringAction org.acm.seguin.ide.common.action.SelectedFileSet
org.acm.seguin.uml.UMLLine org.acm.seguin.uml.UMLIcon
org.acm.seguin.ide.elixir.version.ElixirContainsThread
org.acm.seguin.ide.elixir.version.ElixirVersionControlThread
org.acm.seguin.version.VersionControl
org.acm.seguin.uml.line.SegmentedLine org.acm.seguin.uml.line.EndPointPanel
org.acm.seguin.summary.SummaryTraversal
org.acm.seguin.summary.FrameworkFileSummaryLoader
org.acm.seguin.summary.load.LoadStatus
org.acm.seguin.summary.SummaryTraversal org.acm.seguin.summary.FrameworkLoader
Template Method AbstractClass
org.acm.seguin.ide.common.action.CurrentSummary
TemplateMethod(): updateMetaData, find
PrimitiveOperation(): getMetadataReloader, registerWithCurrentDocument
updateMetaData -> {getMetadataReloader }
find -> {registerWithCurrentDocument }
org.acm.seguin.ide.common.action.RefactoringAction
TemplateMethod(): actionPerformed
PrimitiveOperation(): activateListener
org.acm.seguin.io.DirectoryTreeTraversal
TemplateMethod(): traverse
PrimitiveOperation(): isTarget, visit
org.acm.seguin.metrics.MetricsFrame
TemplateMethod(): createFrame
PrimitiveOperation(): getTitle
org.acm.seguin.metrics.MetricsReport
TemplateMethod(): finalReport, typeReport, methodReport
PrimitiveOperation(): reportAverageStatements, reportAveragePublicMethods, reportAverageOtherMethods, reportAverageClassMethods, reportAverageInstanceVariables, reportAverageClassVariables, reportAbstractClasses, reportInterfaces, reportAverageParameters, reportPublicMethods, reportOtherMethods, reportClassMethods, reportInstanceVariables, reportClassVariables, reportStatement, reportParameters, reportLinesOfCode, reportBlockDepth
finalReport -> {reportAverageStatements, reportAveragePublicMethods, reportAverageOtherMethods, reportAverageClassMethods, reportAverageInstanceVariables, reportAverageClassVariables, reportAbstractClasses, reportInterfaces, reportAverageParameters }
typeReport -> {reportPublicMethods, reportOtherMethods, reportClassMethods, reportInstanceVariables, reportClassVariables }
methodReport -> {reportStatement, reportParameters, reportLinesOfCode, reportBlockDepth }
org.acm.seguin.parser.factory.ParserFactory
TemplateMethod(): getParser, getAbstractSyntaxTree
PrimitiveOperation(): getInputStream, getKey
getParser -> {getInputStream }
getAbstractSyntaxTree -> {getKey }
org.acm.seguin.pretty.PrettyPrintFromIDE
TemplateMethod(): prettyPrintCurrentWindow, getPrintData
PrimitiveOperation(): getStringFromIDE, setStringInIDE, setLineNumber, getLineNumber
prettyPrintCurrentWindow -> {getStringFromIDE, setStringInIDE, setLineNumber }
getPrintData -> {getLineNumber }
org.acm.seguin.pretty.sort.Ordering
TemplateMethod(): compare
PrimitiveOperation(): getIndex
org.acm.seguin.print.xml.State
TemplateMethod(): processLine(String), print(StringBuffer)
PrimitiveOperation(): processLine(String, int, StringBuffer), getFont
processLine(String) -> {processLine(String, int, StringBuffer) }
print(StringBuffer) -> {getFont }
org.acm.seguin.refactor.Refactoring
TemplateMethod(): run, recordUsage
PrimitiveOperation(): preconditions, transform, getID
run -> {preconditions, transform }
recordUsage -> {getID }
org.acm.seguin.refactor.type.AddClassRefactoring
TemplateMethod(): transform
PrimitiveOperation(): transformOriginal, createClass
org.acm.seguin.refactor.type.TypeChangeVisitor
TemplateMethod(): visit(FileSummary, Object), visit(ImportSummary, Object), isSamePackage, isMatchingPackage
PrimitiveOperation(): getAppropriateClasses, getFileSpecificTransform, getNewImports, getNewFile, addRenamingTransforms, getRemoveImportTransform, getCurrentPackage
visit(FileSummary, Object) -> {getAppropriateClasses, getFileSpecificTransform, getNewImports, getNewFile, addRenamingTransforms }
visit(ImportSummary, Object) -> {getRemoveImportTransform, getCurrentPackage }
isSamePackage, isMatchingPackage -> {getCurrentPackage }
org.acm.seguin.summary.query.TypeList
TemplateMethod(): query(PackageSummary), add(FileSummary, LinkedList)
PrimitiveOperation(): isIncluded(FileSummary), isIncluded(TypeSummary)
query(PackageSummary) -> {isIncluded(FileSummary) }
add(FileSummary, LinkedList) -> {isIncluded(TypeSummary) }
org.acm.seguin.uml.refactor.DialogViewListener
TemplateMethod(): actionPerformed
PrimitiveOperation(): createDialog
org.acm.seguin.uml.refactor.ExtractMethodDialog
TemplateMethod(): followup, init
PrimitiveOperation(): setStringInIDE, getStringFromIDE, getSelectionFromIDE
followup -> {setStringInIDE }
init -> {getStringFromIDE, getSelectionFromIDE }
org.acm.seguin.uml.refactor.NoInputRefactoringListener
TemplateMethod(): runRefactoring
PrimitiveOperation(): createRefactoring
org.acm.seguin.uml.refactor.RefactoringDialog
TemplateMethod(): runRefactoring
PrimitiveOperation(): createRefactoring
Visitor Visitor ConcreteElement
org.acm.seguin.parser.JavaParserVisitor 86 subclasses of org.acm.seguin.parser.ast.SimpleNode
org.acm.seguin.summary.SummaryVisitor 13 subclasses of org.acm.seguin.summary.Summary


Detected Design Patterns in JUnit 3.7

Design Pattern Name Roles and Corresponding Classes
* Last updated on March 4th 2016
Object Adapter-Command Adapter/ConcreteCommand Adaptee/Receiver
junit.swingui.TestSuitePanel
adaptee: TestTreeModel fModel
Request(): addError, addFailure, endTest
Target role is played by class junit.framework.TestListener
junit.swingui.TestTreeModel
SpecificRequest(): addError(Test), addFailure(Test), addRunTest(Test)
junit.awtui.TestRunner
adaptee: TestResult fTestResult
Request(): addError, addFailure, endTest
Target role is played by class junit.framework.TestListener
junit.framework.TestResult
SpecificRequest(): errorCount, failureCount, runCount, wasSuccessful
junit.awtui.TestRunner
adaptee: ProgressBar fProgressIndicator
Request(): endTest
Target role is played by class junit.framework.TestListener
junit.awtui.ProgressBar
SpecificRequest(): step
junit.swingui.TestHierarchyRunView
adaptee: TestSuitePanel fTreeBrowser
Request(): getSelectedTest, revealFailure, aboutToStart
Target role is played by class junit.swingui.TestRunView
junit.swingui.TestSuitePanel
SpecificRequest(): getSelectedTest, getTree, showTestTree
Composite Component Composite
junit.framework.Test junit.framework.TestSuite
children: Vector fTests
Add(Component): addTest(Test)
Operation(): countTestCases, run -> runTest
Decorator Component Decorator
junit.framework.Test junit.extensions.TestDecorator
component: Test fTest
Operation(): countTestCases, run -> basicRun
Observer Subject Observer
junit.framework.TestResult
observers: Vector fListeners
Attach(Observer): addListener
Detach(Observer): removeListener
Notify(): addError, addFailure, endTest, startTest
junit.framework.TestListener
Update(): addError, addFailure, endTest, startTest
State-Strategy Context State/Strategy
junit.swingui.FailureRunView
junit.swingui.TestHierarchyRunView
junit.swingui.TestRunContext
junit.swingui.TestRunner junit.runner.FailureDetailView
Template Method AbstractClass
junit.runner.BaseTestRunner
TemplateMethod(): getTest
PrimitiveOperation(): runFailed


Acknowledgments

Other Design Pattern Detection tools

Design Pattern Benchmarks

External documentation sources