1.概念
任何产生对象的方法或类,都可以叫做工厂
2. 简单工厂的可扩展性不好
没啥好说的,呵呵
3. 工厂方法 - 单产品
有利于产品的扩展,即加对应的工厂
屏幕快照 2021-01-13 下午6.01.21.png4. 抽象工厂 - 产品族
适用场景:换皮肤等
有利于产品族的扩展,但在产品的方向不好扩展
4.1 类图
屏幕快照 2021-01-13 下午5.27.12.png抽象工厂:
public abstract class AbastractFactory {
abstract Food createFood();
abstract Vehicle createVehicle();
abstract Weapon createWeapon();
}
抽象产品 - Food:
public abstract class Food {
abstract void printName();
}
抽象产品 - Vehicle:
public abstract class Vehicle {
abstract void go();
}
抽象产品 - Weapon:
public abstract class Weapon {
abstract void shoot();
}
具体产品 - Bread:
public class Bread extends Food{
public void printName() {
System.out.println("wdm");
}
}
具体产品 - Car:
public class Car extends Vehicle{
public void go() {
System.out.println("Car go wuwuwuwuw....");
}
}
具体产品 - AK47:
public class AK47 extends Weapon{
public void shoot() {
System.out.println("tututututu....");
}
}
具体工厂 - ModernFactory:
public class ModernFactory extends AbastractFactory {
@Override
Food createFood() {
return new Bread();
}
@Override
Vehicle createVehicle() {
return new Car();
}
@Override
Weapon createWeapon() {
return new AK47();
}
}
client调用:
public class Main {
public static void main(String[] args) {
AbastractFactory f = new ModernFactory();
Vehicle c = f.createVehicle();
c.go();
Weapon w = f.createWeapon();
w.shoot();
Food b = f.createFood();
b.printName();
}
————————————————————
坐标帝都,白天上班族,晚上是知识的分享者
如果读完觉得有收获的话,欢迎点赞加关注
网友评论