Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
hoangtien2k3 committed Oct 24, 2023
1 parent 3f84d44 commit 52b9097
Show file tree
Hide file tree
Showing 17 changed files with 186 additions and 4 deletions.
1 change: 1 addition & 0 deletions .idea/Java-Design-Patterns.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions .idea/libraries/KotlinJavaRuntime.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 62 additions & 3 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -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
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package Creational_Pattern.Factory_Method.Java_Factory_Method;

class Ship implements Transport {
@Override
public void deliver() {
System.out.println("SeaTransport");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package Creational_Pattern.Factory_Method.Java_Factory_Method;

interface Transport{
void deliver();
}
Original file line number Diff line number Diff line change
@@ -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");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package Creational_Pattern.Factory_Method.Java_Factory_Method;

public enum TransportType{
TRUCK, SHIP
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package Creational_Pattern.Factory_Method.Java_Factory_Method;

class Truck implements Transport {
@Override
public void deliver() {
System.out.println("RoadTransport");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package Creational_Pattern.Factory_Method.Kotlin_Factory_Method

class Ship : Transport {
override fun deliver() {
println("SeaTransport")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package Creational_Pattern.Factory_Method.Kotlin_Factory_Method

interface Transport {
fun deliver()
}
Original file line number Diff line number Diff line change
@@ -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()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package Creational_Pattern.Factory_Method.Kotlin_Factory_Method

enum class TransportType {
TRUCK, SHIP
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package Creational_Pattern.Factory_Method.Kotlin_Factory_Method

class Truck : Transport {
override fun deliver() {
println("RoadTransport")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package Creational_Pattern.Factory_Method.Kotlin_Factory_Method

fun main() {
val transport = TransportFactory.getTransport(TransportType.TRUCK)
transport.deliver() // RoadTransport
}

0 comments on commit 52b9097

Please sign in to comment.