├── Facade └── FacadeExample.java ├── README.md └── Singleton ├── EntryPoint.java └── SingletonClassObjectExample.java /Facade/FacadeExample.java: -------------------------------------------------------------------------------- 1 | package Facade; 2 | 3 | public class FacadeExample { 4 | public static void main(String[] args) { 5 | System.out.println("Facade Design Pattern"); 6 | Computer computer = new Computer(); 7 | computer.startBooting(); 8 | } 9 | } 10 | 11 | class Computer { 12 | //Providing an interface and covering a complex logic in the background. 13 | private CPU cpu; 14 | private Memory memory; 15 | private HardDrive hardDrive; 16 | 17 | public Computer() { 18 | this.cpu = new CPU(); 19 | this.memory = new Memory(); 20 | this.hardDrive = new HardDrive(); 21 | } 22 | 23 | public void startBooting(){ 24 | System.out.println("Computer booting starts..."); 25 | cpu.startProcessing(); 26 | memory.startLoadingMemory(); 27 | hardDrive.startReadingData(); 28 | System.out.println("Computer booting completed"); 29 | } 30 | 31 | 32 | } 33 | class CPU{ 34 | public void startProcessing(){ 35 | System.out.println("processing starts..."); 36 | } 37 | } 38 | class Memory{ 39 | public void startLoadingMemory(){ 40 | System.out.println("memory loading starts..."); 41 | } 42 | } 43 | class HardDrive{ 44 | public void startReadingData(){ 45 | System.out.println("reading data from hard drive starts..."); 46 | } 47 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Software Design Patterns 2 | **Currently developed design patterns in this repository (with example):** 3 | - Facade 4 | - Singleton 5 | -------------------------------------------------------------------------------- /Singleton/EntryPoint.java: -------------------------------------------------------------------------------- 1 | package Singleton; 2 | 3 | public class EntryPoint { 4 | 5 | public static void main(String[] args) { 6 | 7 | SingletonClassObjectExample object = SingletonClassObjectExample.getInstance(); 8 | //SingletonClassObjectExample object2 = new SingletonClassObjectExample(); // not available 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Singleton/SingletonClassObjectExample.java: -------------------------------------------------------------------------------- 1 | package Singleton; 2 | 3 | class SingletonClassObjectExample{ 4 | 5 | /* 6 | static instance 7 | private default constructor 8 | static Getter method 9 | */ 10 | static SingletonClassObjectExample obj = new SingletonClassObjectExample(); 11 | 12 | private SingletonClassObjectExample(){ 13 | 14 | 15 | } 16 | public static SingletonClassObjectExample getInstance(){ 17 | return obj; 18 | } 19 | 20 | } 21 | --------------------------------------------------------------------------------