java工厂设计模式

开始对工厂设计不太理解。感觉有构造方法为什么不调用呢?即使使用工厂模式也只是将本来类中构造方法的问题推给了工厂接口而已。增删改的添加也一样的修改。

我理解比较信服的理由是:使用工厂模式,拆分了客户使用和类的耦合。使用工厂接口降低了客户的学习要求,在接口中可以很好的规避由于客户输入的信息造成的bug。格式化信息以及输入异常不应该由类来处理,应该交由工厂接口处理。

以下例子:


abstract class Factory{
    static Add a = null;
    public static Add getInstance(String x,String y) {
        if(x.contains(".")) { //x包含小数点
            if(y.contains(".")) { //y包含小数点
                a = new Add(Float.parseFloat(x),Float.parseFloat(y));
            }else { //y不包含小数点
                a = new Add(Float.parseFloat(x),Integer.parseInt(y));
            }
        }else { //x不包含小数点
            if(y.contains(".")) { //y包含小数点
                a = new Add(Integer.parseInt(x),Float.parseFloat(y));
            }else { //y不包含小数点
                 a = new Add(Integer.parseInt(x),Integer.parseInt(y));
            }
        }
        return a;
    };
}

class Add extends Factory{
    Add(int x,int y) {
        System.out.println(x+ "+" + y + "=" + (x+y));
    }
    Add(int x,float y) {
        System.out.println((float)x+ "+" + y + "=" + ((float)x+y));
    }
    Add(float x,int y) {
        System.out.println(x+ "+" + (float)y + "=" + (x+(float)y));
    }
    Add(float x,float y) {
        System.out.println((float)x+ "+" + (float)y + "=" + ((float)x+(float)y));
    }
}

public class TestDemo {
    public static void main(String args[]) {
        Add x1 = Factory.getInstance("2", "5");
        Add x2 = Factory.getInstance("2.2", "5");
        Add x3 = Factory.getInstance("2", "5.5");
        Add x4 = Factory.getInstance("2.2", "5.5");
    }
}


结果:
2+5=7
2.2+5.0=7.2
2.0+5.5=7.5
2.2+5.5=7.7


怎么看着有点像单态设计?!

转载于:https://my.oschina.net/ericdeep/blog/103143

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值