diff --git a/.idea/Java-Design-Patterns.iml b/.idea/Java-Design-Patterns.iml index b107a2d..f392c3c 100644 --- a/.idea/Java-Design-Patterns.iml +++ b/.idea/Java-Design-Patterns.iml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..0dd4b35 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/libraries/KotlinJavaRuntime.xml b/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 0000000..30d5a17 --- /dev/null +++ b/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d2eb5ce..ec83019 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 5946adc..db83069 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,21 +1,51 @@ + + - - + + + + + + + + + + + + + + + + + + + + @@ -28,9 +58,38 @@ "keyToString": { "RunOnceActivity.OpenProjectViewOnStart": "true", "RunOnceActivity.ShowReadmeOnStart": "true", - "last_opened_file_path": "D:/Code Java/Java-Design-Patterns" + "SHARE_PROJECT_CONFIGURATION_FILES": "true", + "last_opened_file_path": "/Volumes/Data/Code-base/Java-Design-Patterns" } }]]> + + + + + + + + + + + + diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/Client.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/Client.java new file mode 100644 index 0000000..ddf5ef9 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/Client.java @@ -0,0 +1,8 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +public class Client { + public static void main(String[] args) { + Transport transport = TransportFactory.getTransport(TransportType.SHIP); + transport.deliver(); //SeaTransport + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/Ship.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/Ship.java new file mode 100644 index 0000000..533cb3e --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/Ship.java @@ -0,0 +1,8 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +class Ship implements Transport { + @Override + public void deliver() { + System.out.println("SeaTransport"); + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/Transport.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/Transport.java new file mode 100644 index 0000000..ca370f4 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/Transport.java @@ -0,0 +1,5 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +interface Transport{ + void deliver(); +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportFactory.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportFactory.java new file mode 100644 index 0000000..8c91e3d --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportFactory.java @@ -0,0 +1,16 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +class TransportFactory{ + private TransportFactory() { } + + public static final Transport getTransport(TransportType transportType) { + switch (transportType) { + case TRUCK: + return new Truck(); + case SHIP: + return new Ship(); + default: + throw new IllegalArgumentException("This Transport type is unsupported"); + } + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportType.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportType.java new file mode 100644 index 0000000..6cddf8f --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/TransportType.java @@ -0,0 +1,5 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +public enum TransportType{ + TRUCK, SHIP +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Java_Factory_Method/Truck.java b/Creational_Pattern/Factory_Method/Java_Factory_Method/Truck.java new file mode 100644 index 0000000..46fcca6 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Java_Factory_Method/Truck.java @@ -0,0 +1,8 @@ +package Creational_Pattern.Factory_Method.Java_Factory_Method; + +class Truck implements Transport { + @Override + public void deliver() { + System.out.println("RoadTransport"); + } +} diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Ship.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Ship.kt new file mode 100644 index 0000000..4469495 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Ship.kt @@ -0,0 +1,7 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +class Ship : Transport { + override fun deliver() { + println("SeaTransport") + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Transport.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Transport.kt new file mode 100644 index 0000000..3ce070a --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Transport.kt @@ -0,0 +1,5 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +interface Transport { + fun deliver() +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportFactory.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportFactory.kt new file mode 100644 index 0000000..776a792 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportFactory.kt @@ -0,0 +1,10 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +class TransportFactory { + companion object { + fun getTransport(type: TransportType) : Transport = when(type) { + TransportType.TRUCK -> Truck() + TransportType.SHIP -> Ship() + } + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportType.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportType.kt new file mode 100644 index 0000000..aaf78ff --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/TransportType.kt @@ -0,0 +1,5 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +enum class TransportType { + TRUCK, SHIP +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Truck.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Truck.kt new file mode 100644 index 0000000..b540d39 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/Truck.kt @@ -0,0 +1,7 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +class Truck : Transport { + override fun deliver() { + println("RoadTransport") + } +} \ No newline at end of file diff --git a/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/main.kt b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/main.kt new file mode 100644 index 0000000..6fb77d9 --- /dev/null +++ b/Creational_Pattern/Factory_Method/Kotlin_Factory_Method/main.kt @@ -0,0 +1,6 @@ +package Creational_Pattern.Factory_Method.Kotlin_Factory_Method + +fun main() { + val transport = TransportFactory.getTransport(TransportType.TRUCK) + transport.deliver() // RoadTransport +} \ No newline at end of file