{"id":22220640,"url":"https://github.com/ngljcb/px-filesystem-design-patterns","last_synced_at":"2025-03-25T07:41:42.604Z","repository":{"id":242201166,"uuid":"808931757","full_name":"ngljcb/px-filesystem-design-patterns","owner":"ngljcb","description":"Repository showcasing software design patterns, part of a university course on software development methodologies. Includes implementations of Factory, Adapter, Composite, Observer, and more, with comprehensive examples and tests.","archived":false,"fork":false,"pushed_at":"2024-06-01T09:05:09.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T22:38:55.151Z","etag":null,"topics":["adapter","composite","design-patterns","gof-patterns","java","observer","software-design","software-development","strategy","visitor"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngljcb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-01T07:38:11.000Z","updated_at":"2024-10-25T17:40:37.000Z","dependencies_parsed_at":"2024-06-01T10:30:01.035Z","dependency_job_id":"cbdc3405-4b26-404f-bb9d-8f403ac2c94b","html_url":"https://github.com/ngljcb/px-filesystem-design-patterns","commit_stats":null,"previous_names":["ngljcb/project_16251_dpfilesystem","ngljcb/px-filesystem-design-patterns"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngljcb%2Fpx-filesystem-design-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngljcb%2Fpx-filesystem-design-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngljcb%2Fpx-filesystem-design-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngljcb%2Fpx-filesystem-design-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngljcb","download_url":"https://codeload.github.com/ngljcb/px-filesystem-design-patterns/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245422921,"owners_count":20612725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adapter","composite","design-patterns","gof-patterns","java","observer","software-design","software-development","strategy","visitor"],"created_at":"2024-12-02T23:09:24.144Z","updated_at":"2025-03-25T07:41:42.579Z","avatar_url":"https://github.com/ngljcb.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Design Patterns Practical Example: Filesystem\n\n## Overview\n\nThis project demonstrates the implementation of various software design patterns. It is part of a university course on software development methodologies, aiming to provide practical, clear examples to help understand and apply design patterns.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Design Patterns Covered](#design-patterns-covered)\n- [Folder Structure](#folder-structure)\n- [Getting Started](#getting-started)\n- [Usage](#usage)\n- [Testing](#testing)\n\n## Introduction\n\nDesign patterns are typical solutions to common problems in software design. This project includes several well-known design patterns, each illustrated with example code and detailed explanations.\n\n## Design Patterns Covered\n\nThis repository covers the following design patterns:\n\n1. **Creational Patterns**\n   - Factory Method\n\n2. **Structural Patterns**\n   - Adapter\n   - Composite\n\n3. **Behavioral Patterns**\n   - Observer\n   - Strategy\n   - Visitor\n\n## Folder Structure\n\n```\nproject_16251_designpattern01/\n├── src/\n│   └── mp/\n│       └── exercise/\n│           └── filesystem/\n│               ├── FileSystemDirectory.java\n│               ├── FileSystemDirectoryResourceEvent.java\n│               ├── FileSystemFile.java\n│               ├── FileSystemResource.java\n│               ├── FileSystemResourceAddedEvent.java\n│               ├── FileSystemResourceEvent.java\n│               ├── FileSystemResourceEventVisitor.java\n│               ├── FileSystemResourceObserver.java\n│               ├── FileSystemResourceRemovedEvent.java\n│               ├── FileSystemResourceRenameEvent.java\n│               ├── FileSystemVisitor.java\n│               ├── FileSystemVisitorAdapter.java\n│               └── utils/\n│                   ├── DirectoryFilesCollectionSupplier.java\n│                   ├── DirectoryFilesCollectorObserver.java\n│                   ├── DirectoryLoggerObserver.java\n│                   ├── FileSystemLsVisitor.java\n│                   ├── FileSystemNonRecursiveLsVisitor.java\n│                   ├── FileSystemPrinter.java\n│                   ├── FileSystemUtils.java\n│                   ├── ResourceLs.java\n│                   ├── ResourceLsDecorator.java\n│                   ├── ResourceLsName.java\n│                   ├── ResourceLsSize.java\n│                   └── ResourceLsType.java\n└── tests/\n    └── mp/\n        └── exercise/\n            └── filesystem/\n                ├── FileSystemDirectoryTest.java\n                ├── FileSystemFileTest.java\n                ├── MockFileSystemResourceObserver.java\n                └── utils/\n                    ├── DirectoryFilesCollectorObserverTest.java\n                    ├── DirectoryLoggerObserverTest.java\n                    └── FileSystemPrinterTest.java\n\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Java Development Kit (JDK) 8 or higher\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/ngljcb/project_16251_dpfilesystem.git\n   cd project_16251_dpfilesystem\n   ```\n\n## Usage\n\nEach design pattern is implemented in a self-contained module. You can run the examples using your preferred Java IDE or through the command line.\n\n### Running an Example\n\n1. Navigate to the directory of the design pattern you want to run.\n2. Compile the Java files:\n   ```bash\n   javac src/mp/exercise/filesystem/*.java\n   ```\n3. Run the main class:\n   ```bash\n   java src/mp/exercise/filesystem/Main\n   ```\n\n## Testing\n\nThe project includes unit tests for the implemented design patterns.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngljcb%2Fpx-filesystem-design-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngljcb%2Fpx-filesystem-design-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngljcb%2Fpx-filesystem-design-patterns/lists"}