从零开始学习设计模式——简单工厂模式

既然要写关于设计模式的文章,当然是从最简单的简单工厂模式,或者说静态工厂模式说起。一句话概括——简单工厂模式其实就是根据不同的条件由工厂类去实例化不同的实现类,在使用的时候,并不需要去关心实现类的内部方法具体是怎么实现的,只需要关心实例化了哪个类。

所以简单来说,简单工厂模式就是——对共性开放,对个性封闭。

我们来简单举个例子,假设我要做一个加减乘除算法,但是我并不关心算法的内部是怎么实现的,仅仅管关心自己实现的哪一种算法,首先需要一个被继承的算法类:

public abstract class Operation{

    public abstract void operation();

    
}
我在这儿直接就写成抽象类了,以提醒子类必须重写。

然后是加法类和减法类的具体实现:

public class OperationAdd  extends Operation{

    @Override
    public void operation() {
        System.out.println("实现了加法算法");
    }
    
}

public class OperationSub extends Operation {
    @Override
    public void operation() {
        System.out.println("实现了减法算法");
    }
}
是用来实例化这个加法或者减法的工厂类:

public class OperationFactory {
    public static Operation createOperate(String operate){
        Operation operation = null;
        switch (operate){
            case "add":
                operation = new OperationAdd();
                break;
            case "sub":
                operation = new OperationSub();
                break;
            default:
                break;
        }

        return operation;
    }
}
最后就是使用啦:

 public static void main(String[] args) {
        // TODO Auto-generated method stub
        Operation operation;
        operation = OperationFactory.createOperate("sub");
        operation.operation();
    }
其实从这个例子就能看出来,静态工厂的缺点还是很明显的,那就是不符合“开放—闭合”模式,如果要新增或者删除一种算法,不但需要对算法类进行操作,还需要对工厂类进行操作,但好处也是显而易见的,就是将算法结构给剥离了出来,将方法的具体实现和引用进行了剥离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值