抽象工厂和工厂方法demo

dp
kn5886348135 3 years ago
parent 6ad8fb6d0a
commit 84e1120105

@ -0,0 +1,9 @@
package com.example.tankbattle.abstractfactory.demo;
public class AK47 extends Weapon {
@Override
public void shoot() {
System.out.println("tutututututuututtu");
}
}

@ -0,0 +1,7 @@
package com.example.tankbattle.abstractfactory.demo;
public abstract class AbstractFactory {
abstract Food createFood();
abstract Vehicle createVehicle();
abstract Weapon createWeapon();
}

@ -0,0 +1,9 @@
package com.example.tankbattle.abstractfactory.demo;
public class Bread extends Food {
@Override
public void printName() {
System.out.println("breadbreadbreadbreadbreadbread");
}
}

@ -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");
}
}

@ -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");
}
}

@ -0,0 +1,6 @@
package com.example.tankbattle.abstractfactory.demo;
public abstract class Food {
public abstract void printName();
}

@ -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();
}
}

@ -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");
}
}

@ -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();
}
}

@ -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();
}
}

@ -0,0 +1,9 @@
package com.example.tankbattle.abstractfactory.demo;
public class MushRoom extends Food {
@Override
public void printName() {
System.out.println("mushRoommushRoommushRoommushRoommushRoommushRoom");
}
}

@ -0,0 +1,5 @@
package com.example.tankbattle.abstractfactory.demo;
public abstract class Vehicle {
public abstract void go();
}

@ -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();
}
}

@ -0,0 +1,5 @@
package com.example.tankbattle.abstractfactory.demo;
public abstract class Weapon {
public abstract void shoot();
}

@ -0,0 +1,9 @@
package com.example.tankbattle.factorymethod;
public class Broom implements Moveable{
@Override
public void go() {
System.out.println("broom fly xxxxxxxx");
}
}

@ -0,0 +1,9 @@
package com.example.tankbattle.factorymethod;
public class Car implements Moveable {
@Override
public void go() {
System.out.println("car move xxxxx");
}
}

@ -0,0 +1,10 @@
package com.example.tankbattle.factorymethod;
public class CarFactory {
public Car create() {
// log
System.out.println("xxxxxxxxxxx");
return new Car();
}
}

@ -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();
}
}

@ -0,0 +1,5 @@
package com.example.tankbattle.factorymethod;
public interface Moveable {
void go();
}

@ -0,0 +1,9 @@
package com.example.tankbattle.factorymethod;
public class Plane implements Moveable {
@Override
public void go() {
System.out.println("plane go xxxx");
}
}

@ -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();
}
}
Loading…
Cancel
Save