{"id":34851500,"url":"https://github.com/shiningflash/software-engineering","last_synced_at":"2026-05-15T16:34:48.502Z","repository":{"id":111950530,"uuid":"297222306","full_name":"shiningflash/Software-Engineering","owner":"shiningflash","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-23T01:11:04.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-27T04:20:36.768Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"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/shiningflash.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-21T03:50:03.000Z","updated_at":"2024-10-23T01:11:08.000Z","dependencies_parsed_at":"2023-09-09T08:46:48.407Z","dependency_job_id":null,"html_url":"https://github.com/shiningflash/Software-Engineering","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shiningflash/Software-Engineering","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2FSoftware-Engineering","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2FSoftware-Engineering/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2FSoftware-Engineering/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2FSoftware-Engineering/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shiningflash","download_url":"https://codeload.github.com/shiningflash/Software-Engineering/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2FSoftware-Engineering/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33072562,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-12-25T19:20:26.712Z","updated_at":"2026-05-15T16:34:48.484Z","avatar_url":"https://github.com/shiningflash.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=center\u003e \u003ca href=\"https://github.com/shiningflash/Software-Engineering\" style=\"color: red\"\u003e Software Engineering \u003c/a\u003e \u003c/h1\u003e\n\n----------------------\n\n\u003ch2 align=center\u003e  Creational Design Pattern \u003c/h2\u003e\n\n-------------------------\n\n### [Singleton Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/SingletonPattern)\n\nSingleton pattern is a `Creational design pattern` that restricts a class to instantiate only one \"single\" instance. This is important when exactly one instance is needed to co-ordinate actions across the system..\n\n### [Builder Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/BuilderPattern)\n\nBuilder pattern is a `creational design pattern` that lets you construct a complex object using simple objects and using step by step approach. It solves the issue with large number of optional parameters and inconsistent state by providing a way to build the object step-by-step.\n\n-------------------------\n\n\u003ch2 align=center\u003e  Structural Design Pattern \u003c/h2\u003e\n\n-------------------------\n\n### [Adapter Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/AdapterPattern)\n\nAdapter pattern is a `structural design pattern` which basically works as wrapper, an alternative naming shared with the `Decorator Pattern`. It allows the interface of an existing class to be used as another interface. It is often used to make existing classes work with others without modifying their source code.\n\n### [Composite Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/CompositePattern)\n\nComposite pattern is a `structural design pattern` that lets you compose objects into tree structure and then work with this structure as if they were individual objects. It basically describes groups of objects that can be treated as the same way as a single instance of the same object type.\n\n### [Proxy Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/ProxyPattern)\n\n`Proxy` means 'in place of' or 'on behalf of'. Proxies are called wrappers. For example, a credit card or simply a check is a proxy for what is in our bank account.\n\nSo, proxy pattern is used for easier, safer and more convenient use of placeholder to represent something or someone else.\n\nProxy pattern is a `structural design pattern` that use a proxy class to wrap the subject class to have a polymorphic design so that the client class can expect the same interface for the proxy and the real subject class.\n\n**Uses**\n- To use a lightweight proxy in place of a resource intensive object until it is actually needed.\n- To implement some form of intelligent verification of requests from client code in order to determine if, how and to whom the request should be forwarded to.\n- To present a local representation of system that is not in the same physical or virtual spaces\n- Provides powerful means of interactions\n- Proxy classes are robust and can make the system more secure and less resource intensive.\n\n### [Decorator Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/DecoratorPattern)\n\nDecorator pattern is a `structural design pattern` allows a user to add new functionalities to an existing objects without altering its structure. This pattern creates a decorator class which wraps an original class and provides additional functionalities keeping class method signature intact.\n\n--------------------------\n\n\u003ch2 align=center\u003e  Behavioral Pattern \u003c/h2\u003e\n\n----------------------------\n\n### [Observer Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/ObserverPattern)\n\nObserver pattern is a `behavioral design pattern` which basically defines a one-to-many relationship so that when one object changes state, all the dependants are notified and updated automatically.\n\n### [Template Method Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/TemplatePattern)\n\nTemplate method pattern is a `behavioral design pattern` that allows you to define a skeleton of an algorithm in a base class and let subclasses override the steps without changing the overall algorithm's structure. So, actually template pattern is used when two or more implementations of a similar algorithm exists.\n\n### [Chain of Responsibility Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/ChainOfResponsibilityPattern)\n\nChain of Responsibility is a `behavioral design pattern` that creates a chain of receiver objects for a request. This pattern decouples sender and receiver of a request based on type of request.\n\nEach receiver contains reference to another receiver. If one object can not handle the request then it passes to next receiver and so on.\n\n### [State Pattern](https://github.com/shiningflash/Software-Engineering/tree/master/Design%20Pattern/StatePattern)\n\nState design pattern is a `behavioral design pattern` that allows an object to change it behavior when its internal state changes.\n\n---------------------------","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiningflash%2Fsoftware-engineering","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshiningflash%2Fsoftware-engineering","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiningflash%2Fsoftware-engineering/lists"}