An open API service indexing awesome lists of open source software.

https://github.com/akaliutau/cs-problems-ood

These are examples of OOD for different use-cases.
https://github.com/akaliutau/cs-problems-ood

ood oops-in-java patterns

Last synced: about 2 months ago
JSON representation

These are examples of OOD for different use-cases.

Awesome Lists containing this project

README

          

About
======

I created this repository with aim to demonstrate the best practices in low-level OOD. In OOD these are 24 canonical patterns initially proposed by gang of four, plus various secondary, less-known patterns which are popular in designing complex systems. For example, search functionality in JPA is implemented using Specification pattern.

There are many opinions regarding usefulness of these patterns in solving real problems. Sometimes (not always, but sometimes) there makes sense to add extra complexity into system, bearing in mind all future improvements, additions and complexities - it is not easy to make changes, and better of all anticipate and include them into Grand Design from the day zero.

Sometimes following these patterns is not the best that you could do. In fact, to invent a new approach to solve specific use-case is often much better than to try adopting a standard one. This is all about trade-offs. If design patterns lead to more complex architecture, follow your own way.

The best approach in this situation could be as said by one old man long time ago:

Everything should be made as simple as possible, but no simpler. (c) Einstein

Structure
==========

Package com.design.usecases includes the examples of OOD for different use-cases.

Package com.design.patterns contains implementation of different popular design patterns (total 29):

abstractfactory


adapter


bridge


builder


command


composite


converter


decorator


facade


factory


flyweight


interpreter


iterator


mediator


memento


nullobject


objectpool


observer


pipeline


property


prototype


proxy


chain of responsibilities


singleton


specification


state


strategy


template


visitor

This repository does not include architectural patterns and programming idioms.