- 菜鸟程序员遇到问题只会用时间来摆平。
- 工厂方法模式是定义一个用于创建对象的接口。
- 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类
- 编程是门艺术大批量的改动,是非常丑陋的做法。
-
原始创建族
-
Main.java
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(); } }
-
Car
public class Car extends Vehicle{ public void go() { System.out.println("Car go wuwuwuwuwu..."); } }
-
AK47
public class AK47 extends Weapon{ public void shoot() { System.out.println("tutututu..."); } }
-
Bread
public class Bread extends Food{ public void printName() { System.out.println("wdm"); } }
-
抽象工厂创建族
-
Main .java
public class Main { public static void main(String[] args) { AbstractFactory m = new ModernFactory(); Vehicle c = m.createVehicle(); c.go(); Weapon a = m.createWeapon(); a.shoot(); Food b = m.createFood(); b.printName(); AbstractFactory m2 = new MagicFactory(); Vehicle broom = m2.createVehicle(); broom.go(); Weapon magicStick = m2.createWeapon(); magicStick.shoot(); Food mushroom = m2.createFood(); mushroom.printName(); } }
-
AbstractFactory
public abstract class AbstractFactory { abstract Food createFood(); abstract Vehicle createVehicle(); abstract Weapon createWeapon(); }
-
ModernFactory
public class ModernFactory extends AbstractFactory{ @Override Food createFood() { return new Bread(); } @Override Vehicle createVehicle() { return new Car(); } @Override Weapon createWeapon() { return new AK47(); } }
-
MagicFactory
public class MagicFactory extends AbstractFactory{ @Override Food createFood() { return new MushRoom(); } @Override Vehicle createVehicle() { return new Broom(); } @Override Weapon createWeapon() { return new MagicStick(); } }
-
Food
public abstract class Food { abstract void printName(); }
-
Bread
public class Bread extends Food{ public void printName() { System.out.println("wdm"); } }
-
MushRoom
public class MushRoom extends Food{ public void printName() { System.out.println("du Room"); } }
-
Vehicle
public abstract class Vehicle { //interface //形容词用接口,名词用抽象类 abstract void go(); }
-
Car
public class Car extends Vehicle{ public void go() { System.out.println("Car go wuwuwuwuwu..."); } }
-
Broom
public class Broom extends Vehicle{ public void go() { System.out.println("broom fly chuachuachua..."); } }
-
Weapon
public abstract class Weapon { abstract void shoot(); }
-
AK47
public class AK47 extends Weapon{ public void shoot() { System.out.println("tutututu..."); } }
-
MagicStick
public class MagicStick extends Weapon{ public void shoot() { System.out.println("balala nengliang!"); } }