2021-10-02

工厂模式总结

	工厂模式是非常常用的一种设计模式,比如spring的bean工厂底层就是运用到了工厂模式,

首先介绍一下简单工厂,它并不是一种设计模式,只是一种大家常用的设计方法。核心就是把事务的核心特性抽取出来,接口化,之后通过实现这个接口从而达到实现其核心和功能,最后生成一个工厂来管理生成这些对象。


interface door{
    float setHeight();
    float setWidth();
}
class WoodenDoor implements door{
    private float height;
    private float width;

    public WoodenDoor(float height, float width) {
        this.height = height;
        this.width = width;
    }

    @Override
    public float setHeight() {
        return height;
    }

    @Override
    public float setWidth() {
        return width;
    }
}
class IronDoor implements door{
    private float height;
    private float width;

    public IronDoor(float height, float width) {
        this.height = height;
        this.width = width;
    }

    @Override
    public float setHeight() {
        return height;
    }

    @Override
    public float setWidth() {
        return width;
    }
}
class DoorFactory{
    public static door doorMaker(String door,float height,float width){
        if(door.equals("wood")){
            return new WoodenDoor(height,width);
        }else if(door.equals("iron")){
            return new IronDoor(height, width);
        }
        return null;
    }
}

但是随着物品的增多,一个工厂里的代码就会变得非常多,不好维护,我们就可以把每一件物品都写一个专门的工厂去生产,也就是工厂模式。

interface door{
   void description();
}
class WoodenDoor implements door{

    @Override
    public void description() {
        System.out.println("我是木门!");
    }
}
class IronDoor implements door{
    @Override
    public void description() {
        System.out.println("我是铁门!");
    }
}
abstract class DoorFactory{
    abstract public door getDoor();
    public void installDoor(){
        door d=this.getDoor();
        d.description();
        System.out.println("开始装门!");
    }
}
class WoodenFactory extends DoorFactory{

    @Override
    public door getDoor() {
        return new WoodenDoor();
    }
}
class IronFactory extends DoorFactory{

    @Override
    public door getDoor() {
        return new IronDoor();
    }
}


这里在原来的基础上改写了工厂类,让他变为了一个接口或者抽象方法,之后在给每一个物体写一个单独的工厂,实现工厂的抽象类,之后调用即可!
后面的抽象工厂方法,本质和工厂方法差不多,它是属于一系列工厂方法的集合,本来一个工厂只能生产一个物品,抽象工厂中一个工厂可以生产更多的物品和属性。
总结要点就是,
1.定义物品特性接口
2.实现类实现接口
3.定义抽象工厂接口,包含上面定义的接口(多个)
4.写抽象工厂的实现类,实现抽象工厂方法。
5,调用实现类进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值