zhuyijun 2 rokov pred
rodič
commit
e2c32aa644
20 zmenil súbory, kde vykonal 197 pridanie a 0 odobranie
  1. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/AK47.java
  2. 11 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/AbstractFactory.java
  3. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Bread.java
  4. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Car.java
  5. 5 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Food.java
  6. 18 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/MagicFactory.java
  7. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/MagicStick.java
  8. 22 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Main.java
  9. 18 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/ModernFactory.java
  10. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/MushRoom.java
  11. 7 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Plane.java
  12. 5 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Vehicle.java
  13. 5 0
      src/main/java/cn/zyjblogs/design/abstrsctfactory/Weapon.java
  14. 8 0
      src/main/java/cn/zyjblogs/design/facotymethod/Car.java
  15. 8 0
      src/main/java/cn/zyjblogs/design/facotymethod/CarFactory.java
  16. 20 0
      src/main/java/cn/zyjblogs/design/facotymethod/Main.java
  17. 5 0
      src/main/java/cn/zyjblogs/design/facotymethod/Moveavle.java
  18. 8 0
      src/main/java/cn/zyjblogs/design/facotymethod/Plane.java
  19. 8 0
      src/main/java/cn/zyjblogs/design/facotymethod/PlaneFactory.java
  20. 14 0
      src/main/java/cn/zyjblogs/design/facotymethod/SimpleVehicleFacotry.java

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/AK47.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class AK47 extends Weapon{
+    public void shoot() {
+        System.out.println("射击....");
+    }
+}

+ 11 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/AbstractFactory.java

@@ -0,0 +1,11 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+/**
+ * 抽象工厂
+ */
+public abstract class AbstractFactory {
+    abstract Food createFood();
+    abstract Vehicle createVehicle();
+    abstract Weapon createWeapon();
+
+}

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Bread.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class Bread extends Food{
+    public void printName() {
+        System.out.println("wdm");
+    }
+}

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Car.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class Car  extends Vehicle{
+    public void go() {
+        System.out.println("Car GO ....");
+    }
+}

+ 5 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Food.java

@@ -0,0 +1,5 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public abstract class Food {
+    abstract void printName();
+}

+ 18 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/MagicFactory.java

@@ -0,0 +1,18 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class MagicFactory extends AbstractFactory{
+    @Override
+    Food createFood() {
+        return new MushRoom();
+    }
+
+    @Override
+    Vehicle createVehicle() {
+        return new Plane();
+    }
+
+    @Override
+    Weapon createWeapon() {
+        return new MagicStick();
+    }
+}

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/MagicStick.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class MagicStick extends Weapon{
+    public void shoot() {
+        System.out.println("发魔法");
+    }
+}

+ 22 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Main.java

@@ -0,0 +1,22 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+
+public class Main {
+    public static void main(String[] args) {
+//        AbstractFactory f =new MagicFactory();
+//        Vehicle vehicle = f.createVehicle();
+//        vehicle.go();
+//        Food food = f.createFood();
+//        food.printName();
+//        Weapon weapon = f.createWeapon();
+//        weapon.shoot();
+
+        AbstractFactory f =new ModernFactory();
+        Vehicle vehicle = f.createVehicle();
+        vehicle.go();
+        Food food = f.createFood();
+        food.printName();
+        Weapon weapon = f.createWeapon();
+        weapon.shoot();
+    }
+}

+ 18 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/ModernFactory.java

@@ -0,0 +1,18 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class ModernFactory extends AbstractFactory{
+    @Override
+    Food createFood() {
+        return new Bread();
+    }
+
+    @Override
+    Vehicle createVehicle() {
+        return new Car();
+    }
+
+    @Override
+    Weapon createWeapon() {
+        return new AK47();
+    }
+}

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/MushRoom.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class MushRoom  extends Food{
+    public void printName() {
+        System.out.println("dmg");
+    }
+}

+ 7 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Plane.java

@@ -0,0 +1,7 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public class Plane  extends Vehicle{
+    public void go(){
+        System.out.println("Plane fly");
+    }
+}

+ 5 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Vehicle.java

@@ -0,0 +1,5 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public abstract class Vehicle {
+    abstract void go();
+}

+ 5 - 0
src/main/java/cn/zyjblogs/design/abstrsctfactory/Weapon.java

@@ -0,0 +1,5 @@
+package cn.zyjblogs.design.abstrsctfactory;
+
+public abstract class Weapon {
+    abstract void shoot();
+}

+ 8 - 0
src/main/java/cn/zyjblogs/design/facotymethod/Car.java

@@ -0,0 +1,8 @@
+package cn.zyjblogs.design.facotymethod;
+
+public class Car implements Moveavle{
+    @Override
+    public void go() {
+        System.out.println("Car GO ....");
+    }
+}

+ 8 - 0
src/main/java/cn/zyjblogs/design/facotymethod/CarFactory.java

@@ -0,0 +1,8 @@
+package cn.zyjblogs.design.facotymethod;
+
+public class CarFactory {
+    public Moveavle create() {
+        System.out.println("a car created!");
+        return new Car();
+    }
+}

+ 20 - 0
src/main/java/cn/zyjblogs/design/facotymethod/Main.java

@@ -0,0 +1,20 @@
+package cn.zyjblogs.design.facotymethod;
+
+public class Main {
+    public static void main(String[] args) {
+//        Car c = new Car();
+//        c.go();
+//        Plane p = new Plane();
+//        p.go();
+
+//        Moveavle m = new Car();
+//        m.go();
+//        Moveavle m1 = new Plane();
+//        m1.go();
+
+        Moveavle m  = new CarFactory().create();
+        m.go();
+        Moveavle m1  = new PlaneFactory().create();
+        m1.go();
+    }
+}

+ 5 - 0
src/main/java/cn/zyjblogs/design/facotymethod/Moveavle.java

@@ -0,0 +1,5 @@
+package cn.zyjblogs.design.facotymethod;
+
+public interface Moveavle {
+    void go();
+}

+ 8 - 0
src/main/java/cn/zyjblogs/design/facotymethod/Plane.java

@@ -0,0 +1,8 @@
+package cn.zyjblogs.design.facotymethod;
+
+public class Plane implements Moveavle {
+    @Override
+    public void go(){
+        System.out.println("Plane fly");
+    }
+}

+ 8 - 0
src/main/java/cn/zyjblogs/design/facotymethod/PlaneFactory.java

@@ -0,0 +1,8 @@
+package cn.zyjblogs.design.facotymethod;
+
+public class PlaneFactory {
+    public Moveavle create() {
+        System.out.println("a plane created!");
+        return new Plane();
+    }
+}

+ 14 - 0
src/main/java/cn/zyjblogs/design/facotymethod/SimpleVehicleFacotry.java

@@ -0,0 +1,14 @@
+package cn.zyjblogs.design.facotymethod;
+
+/**
+ * 简单工厂 可扩展性不好
+ */
+public class SimpleVehicleFacotry {
+    public Moveavle createCar() {
+        // before processing
+        return new Car();
+    }
+    public Moveavle createPlane(){
+        return new Plane();
+    }
+}