diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/AK47.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/AK47.java new file mode 100644 index 0000000..d3329c3 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/AK47.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class AK47 extends Weapon { + + @Override + public void shoot() { + System.out.println("tutututututuututtu"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/AbstractFactory.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/AbstractFactory.java new file mode 100644 index 0000000..878359d --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/AbstractFactory.java @@ -0,0 +1,7 @@ +package com.example.tankbattle.abstractfactory.demo; + +public abstract class AbstractFactory { + abstract Food createFood(); + abstract Vehicle createVehicle(); + abstract Weapon createWeapon(); +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Bread.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Bread.java new file mode 100644 index 0000000..fa8a9c6 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Bread.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class Bread extends Food { + + @Override + public void printName() { + System.out.println("breadbreadbreadbreadbreadbread"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Broom.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Broom.java new file mode 100644 index 0000000..a94ad77 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Broom.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class Broom extends Vehicle { + + @Override + public void go() { + System.out.println("broom flybroom flybroom flybroom flybroom flybroom fly"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Car.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Car.java new file mode 100644 index 0000000..5a4453e --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Car.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class Car extends Vehicle { + + @Override + public void go() { + System.out.println("car move xxxxx"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Food.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Food.java new file mode 100644 index 0000000..43d3b0b --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Food.java @@ -0,0 +1,6 @@ +package com.example.tankbattle.abstractfactory.demo; + +public abstract class Food { + public abstract void printName(); + +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicFactory.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicFactory.java new file mode 100644 index 0000000..6913939 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicFactory.java @@ -0,0 +1,19 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class MagicFactory extends AbstractFactory{ + + @Override + Food createFood() { + return new MushRoom(); + } + + @Override + Vehicle createVehicle() { + return new Broom(); + } + + @Override + Weapon createWeapon() { + return new MagicStick(); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicStick.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicStick.java new file mode 100644 index 0000000..687db8b --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/MagicStick.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class MagicStick extends Weapon { + + @Override + public void shoot() { + System.out.println("magic stickmagic stickmagic stickmagic stickmagic stick"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Main.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Main.java new file mode 100644 index 0000000..dc15dc0 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Main.java @@ -0,0 +1,20 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class Main { + public static void main(String[] args) { + Car car = new Car(); + car.go(); + AK47 aK47 = new AK47(); + aK47.shoot(); + Bread bread = new Bread(); + bread.printName(); + + AbstractFactory factory = new ModernFactory(); + Vehicle vehicle = factory.createVehicle(); + vehicle.go(); + Weapon weapon = factory.createWeapon(); + weapon.shoot(); + Food food = factory.createFood(); + food.printName(); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/ModernFactory.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/ModernFactory.java new file mode 100644 index 0000000..fbe59d7 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/ModernFactory.java @@ -0,0 +1,18 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class ModernFactory extends AbstractFactory{ + @Override + Food createFood() { + return new Bread(); + } + + @Override + Vehicle createVehicle() { + return new Car(); + } + + @Override + Weapon createWeapon() { + return new AK47(); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/MushRoom.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/MushRoom.java new file mode 100644 index 0000000..69fa34c --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/MushRoom.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.abstractfactory.demo; + +public class MushRoom extends Food { + + @Override + public void printName() { + System.out.println("mushRoommushRoommushRoommushRoommushRoommushRoom"); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Vehicle.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Vehicle.java new file mode 100644 index 0000000..ff8cb20 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Vehicle.java @@ -0,0 +1,5 @@ +package com.example.tankbattle.abstractfactory.demo; + +public abstract class Vehicle { + public abstract void go(); +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/VehicleFactory.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/VehicleFactory.java new file mode 100644 index 0000000..0ace7a3 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/VehicleFactory.java @@ -0,0 +1,17 @@ +package com.example.tankbattle.abstractfactory.demo; + +import com.example.tankbattle.factorymethod.Broom; +import com.example.tankbattle.factorymethod.Car; + +public abstract class VehicleFactory { + + public Car createCar(){ + // pre-process + return new Car(); + } + + public Broom createBroom(){ + // pre-process + return new Broom(); + } +} diff --git a/src/main/java/com/example/tankbattle/abstractfactory/demo/Weapon.java b/src/main/java/com/example/tankbattle/abstractfactory/demo/Weapon.java new file mode 100644 index 0000000..5c93d25 --- /dev/null +++ b/src/main/java/com/example/tankbattle/abstractfactory/demo/Weapon.java @@ -0,0 +1,5 @@ +package com.example.tankbattle.abstractfactory.demo; + +public abstract class Weapon { + public abstract void shoot(); +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/Broom.java b/src/main/java/com/example/tankbattle/factorymethod/Broom.java new file mode 100644 index 0000000..2ff8529 --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/Broom.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.factorymethod; + +public class Broom implements Moveable{ + + @Override + public void go() { + System.out.println("broom fly xxxxxxxx"); + } +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/Car.java b/src/main/java/com/example/tankbattle/factorymethod/Car.java new file mode 100644 index 0000000..33bf674 --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/Car.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.factorymethod; + +public class Car implements Moveable { + + @Override + public void go() { + System.out.println("car move xxxxx"); + } +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/CarFactory.java b/src/main/java/com/example/tankbattle/factorymethod/CarFactory.java new file mode 100644 index 0000000..7edc500 --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/CarFactory.java @@ -0,0 +1,10 @@ +package com.example.tankbattle.factorymethod; + +public class CarFactory { + public Car create() { + // log + System.out.println("xxxxxxxxxxx"); + return new Car(); + } + +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/Main.java b/src/main/java/com/example/tankbattle/factorymethod/Main.java new file mode 100644 index 0000000..851f086 --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/Main.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.factorymethod; + +public class Main { + public static void main(String[] args) { + Moveable moveable = new CarFactory().create(); + moveable.go(); + + } +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/Moveable.java b/src/main/java/com/example/tankbattle/factorymethod/Moveable.java new file mode 100644 index 0000000..8d52789 --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/Moveable.java @@ -0,0 +1,5 @@ +package com.example.tankbattle.factorymethod; + +public interface Moveable { + void go(); +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/Plane.java b/src/main/java/com/example/tankbattle/factorymethod/Plane.java new file mode 100644 index 0000000..2092a6d --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/Plane.java @@ -0,0 +1,9 @@ +package com.example.tankbattle.factorymethod; + +public class Plane implements Moveable { + + @Override + public void go() { + System.out.println("plane go xxxx"); + } +} diff --git a/src/main/java/com/example/tankbattle/factorymethod/SimpleVehicleFactory.java b/src/main/java/com/example/tankbattle/factorymethod/SimpleVehicleFactory.java new file mode 100644 index 0000000..226ab3a --- /dev/null +++ b/src/main/java/com/example/tankbattle/factorymethod/SimpleVehicleFactory.java @@ -0,0 +1,14 @@ +package com.example.tankbattle.factorymethod; + +public class SimpleVehicleFactory { + + public Car createCar() { + // pre-process + return new Car(); + } + + public Broom createBroom() { + // pre-process + return new Broom(); + } +}