android 工厂模式

在编程中难免会遇到很多重复的操作,如果重复的去cv代码当时你会觉得简单省时间,但是如果后期大量变更需求,增加新功能。你会发现你需要花大量的精力和时间去更改之前大量的重复代码。到最后发现程序臃肿不堪,乱作一团,甚至都想重新写。所以良好的编码习惯能为我们节省大量时间同时提高编程能力,写出让人赏心悦目的代码。
很多语言大部分都继承了三大特点,封装、继承、多态,因此我们可以在这三个基础上让代码具备易扩展、易维护、易复用的特点。
假如现在有一个算法类

**
 * 算法类
 */
public class Count {

    //加法
    public int add(int a, int b) {
        return a + b;
    }

    //减法
    public int subtraction(int a, int b) {
        return a - b;
    }

}

我们把算法封装在一个类里通过new去调用对应的计算,看着目前代码觉得挺简单也比较一目了然。但是这时候如果增加新的计算 在增加一个乘法运算 我们就需要在类里面增加乘法计算

/**
 * 算法类
 */
public class Count {

    //加法
    private int add(int a, int b) {
        return a + b;
    }

    //减法
    private int subtraction(int a, int b) {
        return a - b;
    }

    //乘法
    public int multiplication(int a, int b) {
        return a * b;
    }

}

这时候类里面的方法还算好,但是如果我们在增加除法、开根、平方等计算。就会发现这个类越来越臃肿,耦合度也高。而且每一次的变更都需要对此类做修改这是很不好的,我们应该把每一个计算的方式独立,不相互依赖。修改加法时我们只需要更改加法的,别的计算方式对于我们来说完全不可见,我们只需要关注其中的一点就可以了。
这时候我们可以使用工厂模式来改变代码的结构,使用工厂模式需要用到继承、多态 这两大特点。
我们可以先建立一个父类,这个类中有一个计算的方法

//可以是抽象   也可以是接口
public class CountParent {

    public int a;
    public int b;

    public int count() {
        return 0;
    }
}

然后在写对应计算方法类

public class Add extends CountParent {
    @Override
    public int count() {
        a = 12;
        b = 19;
        return a + b;
    }
}

这里为了方便我直接写数值,减法等类似写法。这样我们就将对应的计算分开了,每个都是独立的存在,当你修改加法 你也只能看到加法的计算。不会牵涉别的计算方法。有了各种计算方式后我们就要考虑如何使用了。有些人可能会直接new对应的计算类当然这样也可以,但是如果频繁使用的话,就得频繁去new了。当出现这种情况的时候我们就可以使用工厂模式了,让工厂为我们生产对应的类,这样我们就不需要频繁去自己写new了。

public class CountFactory {
    public static CountParent getCountParent(String type) {
        CountParent countParent = null;
        switch (type) {
            case "+":
                countParent = new Add();
                break;
            case "-":
                countParent = new Subtraction();
                break;
        }
        return countParent;
    }
}

直接造一个工厂类,通过不同的计算符号去生产对应的计算类,这里就运用到了多态。
在使用的时候就取代了频繁new的情况

//现在使用方式
CountFactory.getCountParent("+").count()
//之前调用方式
 new Add().count();
 new Subtraction().count();

我们只需要更改对应计算符号即可,使用起来也更方便,不需要考虑怎么实现,只需要关注对应的计算符号。
当我们需要频繁去new一个类的时候,我们就可以使用工厂模式去造这个类。使用工厂模式需要了解继承和多态以及使用。模式虽好,但不能乱用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值