使用Factory(工厂)模式改善现有软件设计—对象产生器

其实设计模式就是一个不断转移依赖,不断进行抽象的一个产物,把个部分零散掉,之后在靠一些规则组合在一起,完成一个本应该几行代码完成的事情,这样做必然会带来一些设计上的复杂,但是各各部分被打散之后偶合更小,一般在一个代码里修改代码,而不用变动其它地方的代码。
其实工厂模式真的很简单,但是实现工厂模式就有很多种方法了,一般来说,现在有了DI框架,完全可以抛弃工厂模式,而且现在JAVA语言又支持一些动态性,比如反射特性,我们完全可以使用反射去生成类的对象。但是,利用反射生成对象之后需要在使用反射的特性去调用方法,还是有些麻烦的。其实我认为工厂模式在自己的项目中完全可以踢掉而使用DI这类框架,也不要自己动手去用反射完成DI的事情。

我们可以使用这种编程习惯,在自己类中写一个这样的方法。
class A{
public A factory(){
return new A();
}
}


我们也可以写一个简单的工厂模式。

public class Factory{

  public static Sample creator(){
  return new SampleA();
}
}

那么在你的程序中,如果要实例化Sample时.就使用
Sample sampleA=Factory.creator();


这个是个最简单的工厂,同样可以使用一些反射特性:

public Object factory(String clss) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class cls=Class.forName(clss);
Object ob=cls.newInstance();
return ob;
}


当然,实现的方法多种多样。

有些时候为了降低工厂之间的偶合,我们使用一个抽象类或者一个接口,比如用接口降低工厂生成时候的偶合,我们还可以用抽象类,基类实现基本的通用的,可以被高度抽象的方法,子类去实现这些方法,之后在NEW时使用多态性,让工厂来制造出我们需要的对象。

现在有了DI,我更倾向于DI去解决这种问题。使用DI之后不需要往系统中添加这个模式,毕竟加进来是要成本的,而且还会有BUG。而DI让工厂做的事情变的更简单,而且还可以抽象出一个接口出来,对接口做IOC,还是很不错的设计选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值