<!-- the line below needs to be an empty line C: (its because kramdown isnt
     that smart and dearly wants an empty line before a heading to be able to
     display it as such, e.g. website) -->

# Σχεδιαστικά μοτίβα για την Java

![Java CI](https://github.com/iluwatar/java-design-patterns/workflows/Java%20CI/badge.svg)
[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=ncloc)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
[![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-208-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

<br/>

# Εισαγωγή

Τα σχεδιαστικά μοτίβα είναι οι καλύτερες, επίσημες πρακτικές που μπορεί να χρησιμοποιήσει ένας προγραμματιστής την λύση κοινών προβλημάτων κατά το σχεδιασμό μιας εφαρμογής ή συστήματος.

Τα σχεδιαστικά μοτίβα μπορούν να επιταχύνουν τη διαδικασία ανάπτυξης παρέχοντας δοκιμασμένα, αποδεδειγμένα παραδείγματα.

Η επαναχρησιμοποίηση σχεδιαστικών μοτίβων βοηθά στην αποφυγή λεπτών ζητημάτων που προκαλούν μεγάλα προβλήματα και βελτιώνει επίσης την αναγνωσιμότητα κώδικα για άτομα που είναι εξοικειωμένοι με τα μοτίβα αυτά.

# Κάνοντας την αρχή

Αυτός ο ιστότοπος παρουσιάζει σχεδιαστικά μοτίβα στην Java. Οι λύσεις έχουν αναπτυχθεί από έμπειρους προγραμματιστές και αρχιτέκτονες από την κοινότητα ανοιχτού κώδικα. Τα μοτίβα μπορούν να ελεγχθούν από τις περιγραφές υψηλού επιπέδου ή κοιτάζοντας τον πηγαίο κώδικα τους. Τα παραδείγματα του πηγαίου κώδικα είναι καλά σχολιασμένα και μπορούν να θεωρηθούν ως εκπαιδευτικά προγράμματα προγραμματισμού για τον τρόπο εφαρμογής ενός συγκεκριμένου μοτίβου. Χρησιμοποιούμε τις πιο δημοφιλείς τεχνολογίες Java ανοιχτού κώδικα, αποδεδειγμένα στη μάχη.

Πριν ξεκινήσετε, θα πρέπει να είστε εξοικειωμένοι με διάφορες
[Αρχές Σχεδιασμού Λογισμικού](https://java-design-patterns.com/principles/).

Όλα τα σχέδια πρέπει να είναι όσο το δυνατόν πιο απλά. Θα πρέπει να ξεκινήσετε με τις αρχές KISS, YAGNI και Do The Simplet Thing That Could Possibly Work. Πολυπλοκότητα και μοτίβα θα πρέπει να εισάγονται μόνο όταν χρειάζονται για πρακτική επεκτασιμότητα.

Μόλις εξοικειωθείτε με αυτές τις έννοιες, μπορείτε να αρχίσετε να εξετάζετε τα
[τα διαθέσιμα σχεδιαστικά μοτίβα](https://java-design-patterns.com/patterns/) με οποιονδήποτε
απο τους παρακάτω τρόπους

 - Αναζητήστε ένα συγκεκριμένο μοτίβο με το όνομα του. Δεν μπορείτε να το βρείτε; Αναφέρετε ένα νέο μοτίβο [εδώ](https://github.com/iluwatar/java-design-patterns/issues).
 - Χρησιμοποιώντας ετικέτες όπως `Performance`, `Gang of Four` or `Data access`.
 - Χρησιμοποιώντας κατηγορίες μοτίβων, `Creational`, `Behavioral`, and others.

Ας ελπίσουμε ότι θα βρείτε τις αντικειμενοστρεφείς λύσεις που παρουσιάζονται σε αυτόν τον ιστότοπο χρήσιμες στις αρχιτεκτονικές σας και θα διασκεδάσετε μαθαίνοντας τες όσο και εμείς κατά την ανάπτυξή τους.

# Πως να συνεισφέρεις

Εάν είστε πρόθυμοι να συνεισφέρετε στο έργο, θα βρείτε τις σχετικές πληροφορίες στο δικό μας [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). Θα σας βοηθήσουμε και θα απαντήσουμε στις ερωτήσεις σας στο [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns).

# Άδεια

Αυτό το έργο αδειοδοτείται σύμφωνα με τους όρους της άδειας MIT.

# Συνεισφέροντες

