美文网首页
工厂系列

工厂系列

作者: zzj0990 | 来源:发表于2021-01-13 18:33 被阅读0次

1.概念

任何产生对象的方法或类,都可以叫做工厂

2. 简单工厂的可扩展性不好

没啥好说的,呵呵

3. 工厂方法 - 单产品

有利于产品的扩展,即加对应的工厂

屏幕快照 2021-01-13 下午6.01.21.png

4. 抽象工厂 - 产品族

适用场景:换皮肤等
有利于产品族的扩展,但在产品的方向不好扩展

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

————————————————————
坐标帝都,白天上班族,晚上是知识的分享者
如果读完觉得有收获的话,欢迎点赞加关注

相关文章

网友评论

      本文标题:工厂系列

      本文链接:https://www.haomeiwen.com/subject/usouaktx.html