How romise15/software-design-patterns works
This repository is a set of Java examples demonstrating design patterns, rather than one integrated application. Each assignment has its own small user-to-result flow: construct and display reports, create transports or platform-specific UI, draw shapes with interchangeable renderers, convert a video, select a route strategy, or visit a file-system tree. The graph preserves these separate workflows and their internal pattern roles. Relationships for unsampled classes are included only where the source index or shown code supports them; there is no README capability description.
Main entry points: VideoConversionFacade.java Conversion Facade · assignment2/Main.java Factory Demo · assignment6/Main.java Visitor Demo · src/Main.java Report Demo
Components 32
Report Builder
- Report Demo
assignment1-builder/src/Main.java - Report Director
assignment1-builder/src/director/ReportDirector.java - Format Builders
assignment1-builder/src/builder - Report
assignment1-builder/src/model/Report.java
Factory Patterns
- Factory Demo
assignment2/src/assignment2/Main.java - Transport Factories
assignment2/src/assignment2/factory_method/factory - Transport Products
assignment2/src/assignment2/factory_method/model - GUI Application
assignment2/src/assignment2/abstract_factory/app/Application.java - Platform Factories
assignment2/src/assignment2/abstract_factory/factory - Platform Widgets
assignment2/src/assignment2/abstract_factory/button
Shape Rendering
- Drawing Demo
assignment3/src/assignment3/Main.java - Shapes
assignment3/src/assignment3/Shape.java - Renderers
assignment3/src/assignment3/Renderer.java
Video Conversion
- Conversion Demo
assignment4/src/assignment4/Main.java - Conversion Facade
assignment4/src/assignment4/VideoConversionFacade.java - Video File
assignment4/src/assignment4/VideoFile.java - Codec Detection
assignment4/src/assignment4/CodecFactory.java - Bitrate Reader
assignment4/src/assignment4/BitrateReader.java - Audio Mixer
assignment4/src/assignment4/AudioMixer.java
Route Strategies
- Navigation Demo
assignment5/src/assignment5/Main.java - Navigator
assignment5/src/assignment5/Navigator.java - Route Strategies
assignment5/src/assignment5/RouteStrategy.java
File-System Visitor
- Visitor Demo
assignment6/src/assignment6/Main.java - File-System Elements
assignment6/src/assignment6/FileSystemElement.java - Search Visitor
assignment6/src/assignment6/SearchVisitor.java - Size Calculator
assignment6/src/assignment6/SizeCalculatorVisitor.java
Other components
- Example Runner
- Example Runner
- Example Runner
- Example Runner
- Example Runner
- Example Runner
Connections 32
- Example Runner → Report Demo: runs
assignment1-builder/src/Main.java - Report Demo → Report Director: requests reports
assignment1-builder/src/Main.java - Report Director → Format Builders: uses builder
assignment1-builder/src/director/ReportDirector.java - Format Builders → Report: builds
assignment1-builder/src/builder/ReportBuilder.java - Report Demo → Report: displays
assignment1-builder/src/Main.java - Example Runner → Factory Demo: runs
assignment2/src/assignment2/Main.java - Factory Demo → Transport Factories: plans delivery
assignment2/src/assignment2/Main.java - Transport Factories → Transport Products: creates
assignment2/src/assignment2/factory_method/factory/TransportFactory.java - Factory Demo → GUI Application: creates
assignment2/src/assignment2/Main.java - Factory Demo → Platform Factories: selects
assignment2/src/assignment2/Main.java - GUI Application → Platform Factories: requests widgets
assignment2/src/assignment2/abstract_factory/app/Application.java - GUI Application → Platform Widgets: renders and triggers
assignment2/src/assignment2/abstract_factory/app/Application.java - Platform Factories → Platform Widgets: creates
assignment2/src/assignment2/abstract_factory/factory/WindowsFactory.java - Example Runner → Drawing Demo: runs
assignment3/src/assignment3/Main.java - Drawing Demo → Shapes: draws
assignment3/src/assignment3/Main.java - Shapes → Renderers: delegates drawing
assignment3/src/assignment3/Circle.java - Example Runner → Conversion Demo: runs
assignment4/src/assignment4/Main.java - Conversion Demo → Conversion Facade: requests conversion
assignment4/src/assignment4/Main.java - Conversion Facade → Video File: creates
assignment4/src/assignment4/VideoConversionFacade.java - Conversion Facade → Codec Detection: detects codec
assignment4/src/assignment4/VideoConversionFacade.java - Conversion Facade → Bitrate Reader: reads and converts
assignment4/src/assignment4/VideoConversionFacade.java - Conversion Facade → Audio Mixer: fixes audio
assignment4/src/assignment4/VideoConversionFacade.java - Bitrate Reader → Video File: reads
assignment4/src/assignment4/BitrateReader.java - Example Runner → Navigation Demo: runs
assignment5/src/assignment5/Main.java - Navigation Demo → Navigator: configures
assignment5/src/assignment5/Main.java - Navigator → Route Strategies: uses strategy
assignment5/src/assignment5/Navigator.java - Example Runner → Visitor Demo: runs
assignment6/src/assignment6/Main.java - Visitor Demo → File-System Elements: builds tree
assignment6/src/assignment6/Main.java - Visitor Demo → Search Visitor: runs search
assignment6/src/assignment6/Main.java - Visitor Demo → Size Calculator: calculates size
assignment6/src/assignment6/Main.java - File-System Elements → Search Visitor: accepts visits
- File-System Elements → Size Calculator: accepts visits