其实设计模式就是一个不断转移依赖,不断进行抽象的一个产物,把个部分零散掉,之后在靠一些规则组合在一起,完成一个本应该几行代码完成的事情,这样做必然会带来一些设计上的复杂,但是各各部分被打散之后偶合更小,一般在一个代码里修改代码,而不用变动其它地方的代码。
其实工厂模式真的很简单,但是实现工厂模式就有很多种方法了,一般来说,现在有了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,还是很不错的设计选择。
分享到:
相关推荐
在软件工程领域,设计模式是解决常见问题的模板或最佳实践,它们被广泛应用于创建可扩展、可维护的代码。本资源包含两部分:工厂设计模式和对象池的设计与实现,主要面向Java开发者。 首先,我们来深入理解工厂设计...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。这些模式经过时间的考验,被广泛应用于各种面向对象的软件开发中,以提高代码的可读性、可维护性和可复用性。本教程旨在深入讲解...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
在实际编程中,Factory模式可以与其他设计模式结合使用,如单例模式、装饰器模式等,以实现更复杂的系统结构。例如,工厂模式可以与依赖注入框架结合,使代码更加灵活,易于测试。 总结来说,Factory模式是软件设计...
工厂模式是一种常用的软件设计模式,它是创建型设计模式的一种,主要解决对象的创建问题,将对象的创建过程封装起来,使得创建过程独立于使用过程。这样可以提高代码的可复用性和灵活性,同时降低了系统的耦合度。...
"设计模式可复用面向对象软件的基础"这一主题强调了设计模式在创建可维护、可扩展的面向对象软件中的核心作用。源码实现则为我们提供了实际应用这些模式的实例,帮助我们更好地理解和掌握它们。 在《设计模式:可...
在软件设计领域,工厂模式是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建一个工厂类,该类负责创建特定类型的对象,而无需暴露具体的创建逻辑。这样,客户端代码就可以使用...
工厂模式是一种常用的面向对象设计模式,它属于创建型设计模式,旨在提供一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个专门的工厂对象来完成这个任务。这样...
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它只需要一个具体工厂类的引用,而不需要知道如何构造这些对象的细节。这种模式的核心在于封装了...
这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...
《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...
在众多设计模式中,抽象工厂(Abstract Factory)模式是一种创建型模式,它为创建一组相关或相互依赖的对象提供一个接口,而无需指定它们的具体类。这种模式允许客户端使用抽象接口与具体实现解耦,使得系统更易于...
工厂模式是一种常用的设计模式,它的主要目的是通过抽象出产品创建过程,使得客户端代码不再直接new对象,而是通过工厂来获取对象,从而降低了代码之间的耦合度,提高了系统的可扩展性。工厂模式分为简单工厂模式、...
《设计模式:可复用面向对象软件的基础》是一本由Erich Gamma、Richard Helm等四位国际知名的软件工程师共同编写的经典之作,该书提供了面向对象软件设计中常用的模式,并通过具体的案例解释了这些模式如何帮助解决...
1. **创建型模式**(Creational Patterns):这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式...
工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象创建的问题。在工厂模式中,我们创建对象的过程被抽象出来,客户端不再直接创建对象,而是通过调用一个公共的工厂类来得到所需的对象。这样...
**抽象工厂模式(Abstract Factory Pattern)是创建型设计模式之一,它提供了一种创建对象的接口,使得子类可以决定实例化哪一个类。这种类型的设计模式属于类的创建模式。** 在C#中,抽象工厂模式的核心在于抽象...