From ffa0db8b4be3af230af36dfdf7563d042e34a1eb Mon Sep 17 00:00:00 2001 From: Jian Hu Date: Mon, 27 Jun 2022 10:29:03 +0800 Subject: [PATCH] abstract factory --- src/abstractFactory/AbstractFactory.java | 7 +++++++ src/abstractFactory/Airship.java | 8 ++++++++ src/abstractFactory/Ak47.java | 8 ++++++++ src/abstractFactory/AlienFactory.java | 18 ++++++++++++++++++ src/abstractFactory/Bread.java | 8 ++++++++ src/abstractFactory/Car.java | 8 ++++++++ src/abstractFactory/Food.java | 5 +++++ src/abstractFactory/HumanFactory.java | 18 ++++++++++++++++++ src/abstractFactory/Main.java | 13 +++++++++++++ src/abstractFactory/Mushroom.java | 8 ++++++++ src/abstractFactory/Thunder.java | 8 ++++++++ src/abstractFactory/Vehicles.java | 5 +++++ src/abstractFactory/Weapon.java | 5 +++++ src/factoryMethod/Car.java | 2 +- src/factoryMethod/CarFactory.java | 2 +- .../{Vehicle.java => Moveable.java} | 2 +- src/factoryMethod/Plane.java | 2 +- 17 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 src/abstractFactory/AbstractFactory.java create mode 100644 src/abstractFactory/Airship.java create mode 100644 src/abstractFactory/Ak47.java create mode 100644 src/abstractFactory/AlienFactory.java create mode 100644 src/abstractFactory/Bread.java create mode 100644 src/abstractFactory/Car.java create mode 100644 src/abstractFactory/Food.java create mode 100644 src/abstractFactory/HumanFactory.java create mode 100644 src/abstractFactory/Main.java create mode 100644 src/abstractFactory/Mushroom.java create mode 100644 src/abstractFactory/Thunder.java create mode 100644 src/abstractFactory/Vehicles.java create mode 100644 src/abstractFactory/Weapon.java rename src/factoryMethod/{Vehicle.java => Moveable.java} (59%) diff --git a/src/abstractFactory/AbstractFactory.java b/src/abstractFactory/AbstractFactory.java new file mode 100644 index 0000000..905c700 --- /dev/null +++ b/src/abstractFactory/AbstractFactory.java @@ -0,0 +1,7 @@ +package abstractFactory; + +public abstract class AbstractFactory { + abstract Food createFood(); + abstract Vehicles createVehicle(); + abstract Weapon createWeapon(); +} diff --git a/src/abstractFactory/Airship.java b/src/abstractFactory/Airship.java new file mode 100644 index 0000000..45172f4 --- /dev/null +++ b/src/abstractFactory/Airship.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Airship extends Vehicles{ + @Override + void move() { + System.out.println("Alien move with airship, shu shu shu..."); + } +} diff --git a/src/abstractFactory/Ak47.java b/src/abstractFactory/Ak47.java new file mode 100644 index 0000000..1d9e84c --- /dev/null +++ b/src/abstractFactory/Ak47.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Ak47 extends Weapon{ + @Override + void shoot() { + System.out.println("human shoot with bullet, biu biu biu..."); + } +} diff --git a/src/abstractFactory/AlienFactory.java b/src/abstractFactory/AlienFactory.java new file mode 100644 index 0000000..04a076b --- /dev/null +++ b/src/abstractFactory/AlienFactory.java @@ -0,0 +1,18 @@ +package abstractFactory; + +public class AlienFactory extends AbstractFactory{ + @Override + Food createFood() { + return new Mushroom(); + } + + @Override + Vehicles createVehicle() { + return new Airship(); + } + + @Override + Weapon createWeapon() { + return new Thunder(); + } +} diff --git a/src/abstractFactory/Bread.java b/src/abstractFactory/Bread.java new file mode 100644 index 0000000..de0ddc2 --- /dev/null +++ b/src/abstractFactory/Bread.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Bread extends Food{ + @Override + void printName() { + System.out.println("human eat bread"); + } +} diff --git a/src/abstractFactory/Car.java b/src/abstractFactory/Car.java new file mode 100644 index 0000000..ce24fdc --- /dev/null +++ b/src/abstractFactory/Car.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Car extends Vehicles{ + @Override + void move() { + System.out.println("human move with car, tu tu tu..."); + } +} diff --git a/src/abstractFactory/Food.java b/src/abstractFactory/Food.java new file mode 100644 index 0000000..c5bd4c6 --- /dev/null +++ b/src/abstractFactory/Food.java @@ -0,0 +1,5 @@ +package abstractFactory; + +public abstract class Food { + abstract void printName(); +} diff --git a/src/abstractFactory/HumanFactory.java b/src/abstractFactory/HumanFactory.java new file mode 100644 index 0000000..2709ec9 --- /dev/null +++ b/src/abstractFactory/HumanFactory.java @@ -0,0 +1,18 @@ +package abstractFactory; + +public class HumanFactory extends AbstractFactory{ + @Override + Food createFood() { + return new Bread(); + } + + @Override + Vehicles createVehicle() { + return new Car(); + } + + @Override + Weapon createWeapon() { + return new Ak47(); + } +} diff --git a/src/abstractFactory/Main.java b/src/abstractFactory/Main.java new file mode 100644 index 0000000..621be50 --- /dev/null +++ b/src/abstractFactory/Main.java @@ -0,0 +1,13 @@ +package abstractFactory; + +public class Main { + public static void main(String[] args) { + AbstractFactory factory = new HumanFactory(); + Food f = factory.createFood(); + f.printName(); + Vehicles v = factory.createVehicle(); + v.move(); + Weapon w = factory.createWeapon(); + w.shoot(); + } +} diff --git a/src/abstractFactory/Mushroom.java b/src/abstractFactory/Mushroom.java new file mode 100644 index 0000000..ff3eed1 --- /dev/null +++ b/src/abstractFactory/Mushroom.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Mushroom extends Food{ + @Override + void printName() { + System.out.println("alien eat mushroom"); + } +} diff --git a/src/abstractFactory/Thunder.java b/src/abstractFactory/Thunder.java new file mode 100644 index 0000000..5d645ca --- /dev/null +++ b/src/abstractFactory/Thunder.java @@ -0,0 +1,8 @@ +package abstractFactory; + +public class Thunder extends Weapon{ + @Override + void shoot() { + System.out.println("alien shoot with thunder, zi zi zi..."); + } +} diff --git a/src/abstractFactory/Vehicles.java b/src/abstractFactory/Vehicles.java new file mode 100644 index 0000000..e16a479 --- /dev/null +++ b/src/abstractFactory/Vehicles.java @@ -0,0 +1,5 @@ +package abstractFactory; + +public abstract class Vehicles { + abstract void move(); +} diff --git a/src/abstractFactory/Weapon.java b/src/abstractFactory/Weapon.java new file mode 100644 index 0000000..0af47f4 --- /dev/null +++ b/src/abstractFactory/Weapon.java @@ -0,0 +1,5 @@ +package abstractFactory; + +public abstract class Weapon { + abstract void shoot(); +} diff --git a/src/factoryMethod/Car.java b/src/factoryMethod/Car.java index 0024212..a5bfaa9 100644 --- a/src/factoryMethod/Car.java +++ b/src/factoryMethod/Car.java @@ -1,6 +1,6 @@ package factoryMethod; -public class Car implements Vehicle{ +public class Car implements Moveable { @Override public void go() { System.out.println("Car starting... go to park..."); diff --git a/src/factoryMethod/CarFactory.java b/src/factoryMethod/CarFactory.java index 223f30a..ed18f87 100644 --- a/src/factoryMethod/CarFactory.java +++ b/src/factoryMethod/CarFactory.java @@ -1,7 +1,7 @@ package factoryMethod; public class CarFactory { - public Vehicle createCar(){ + public Moveable createCar(){ System.out.println("car created..."); return new Car(); } diff --git a/src/factoryMethod/Vehicle.java b/src/factoryMethod/Moveable.java similarity index 59% rename from src/factoryMethod/Vehicle.java rename to src/factoryMethod/Moveable.java index c1fa792..f5c9433 100644 --- a/src/factoryMethod/Vehicle.java +++ b/src/factoryMethod/Moveable.java @@ -1,5 +1,5 @@ package factoryMethod; -public interface Vehicle { +public interface Moveable { void go(); } diff --git a/src/factoryMethod/Plane.java b/src/factoryMethod/Plane.java index ea10769..4effbf0 100644 --- a/src/factoryMethod/Plane.java +++ b/src/factoryMethod/Plane.java @@ -1,6 +1,6 @@ package factoryMethod; -public class Plane implements Vehicle{ +public class Plane implements Moveable{ @Override public void go() { System.out.println("plant moving.. fly fly fly...");