`
soongbo
  • 浏览: 88717 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

深入浅出设计模式之工厂模式

 
阅读更多

                                                            深入浅出设计模式之工厂模式

 

  随着工作经历的不断增加,每一个程序员都不可避免的会涉及到从一个普通程序员成长为一个高级或资深程序员的过程。在这个工程中,需要学习很多更加深入的知识,这其中就包括针对代码结构的设计和优化的思想,而培养这种思想的前提就是需要学习设计模式。在接下来的一段时间内,本人将逐一分享一些设计模式的经验。希望对各位学习设计模式有一些帮助。
工厂模式
工厂模式定义:提供创建一组对象的标准接口。
如何使用?
      工厂模式应该是任何一个系统中使用最多的设计模式之一,为什么说工厂模式最为常用,原因很简单,因为工厂模式的作用就是替代我们的代码中出现new关键字对一个对象的创建,工厂模式就是用来创建对象。
一般情况下,我们创建一个对象,使用如下代码:
Node node = new Node();
如果我们需要传入构造参数,创建的代码如下:
Node Node = new Node(参数);
      但是,在很多情况下,我们创建一个对象都不是简单的属于参数就可以完成的,比如:查询数据,或者通过配置文件获取一些信息等,这就导致了一个类的构造函数中需要实现较多的功能,这样不利用代码优雅设计,代码极为难看。
为什么说,这种情况下代码极为难看。很多人都知道,在程序设计中,Java提倡面向对象原则,而面向对象原则有提倡分派和封装。尽量将较长的代码段分派到各个单一职责的方法或者接口中去实现,这一点也是Java中提倡的单一职责原则。这样做降低了代码修改的难度,如果需要修改代码,只需要修改一处,不会导致牵一发而动全身。
下面使用一些例子来说明工厂方法的使用:
首先建立创建Node的工厂类:

public class NodeFactory {
	
	public Node create(int type) {
		if (type == 1) {
			return new NodeA();
		} else if (type == 2) {
			return new NodeB();
		} else {
			throw new RuntimeException("Error Type: " + type);
		}
		
	}
}


     这样来初始化Node对象的直接好处就是,在我们需要初始化Node归到一个地方来实现,这样就可以方便的修改Node对象初始化的过程。同样也减少了出现错误的几率,必进事情越少做,越不容易犯错误。
工厂模式分为两种:工厂方法模式和抽象工厂模式
     在上边的例子中,我们实现的是工厂方法模式,如果创建的对象复杂度升高,这个时候就需要使用抽象工厂模式。具体来看一下代码:
这里假设,Node有连个实现类NodeA和NodeB,同样Node2也有两个实现类Node2A和Node2B,那么我们将上列中的Factory变成抽象工厂类实现,实现抽象工厂模式

public abstract class AbstractFactory {
	
	public abstract Node createNode();
	
	public abstract Node2 createNode2();
	
	
	class NodeAFactory extends AbstractFactory {

		@Override
		public Node createNode() {
			return new NodeA();
		}

		@Override
		public Node2 createNode2() {
			return new Node2B();
		}
		
	}
	
	class NodeBFactory extends AbstractFactory {

		@Override
		public Node createNode() {
			return new NodeB();
		}

		@Override
		public Node2 createNode2() {
			return new Node2B();
		}
		
	}
} 



   从上面看,我们实现了一个抽象工厂,分别产生NodeA和Node2A的工厂,和NodeB和Node2B的工厂。至此,我们已经详细介绍了工厂模式的使用,这里的例子只是简单的实现。在实际的生成环境的系统中,工厂模式往往还可以结合其他模式一起使用,比如享元模式。这些实现我们可以在后续的讲解中提及到。

 

分享到:
评论

相关推荐

    深入浅出设计模式

    ### 深入浅出设计模式之工厂模式详解 #### 引言 设计模式是软件工程领域中一种解决常见问题的通用解决方案。本文主要聚焦于工厂模式,它是一种创建型设计模式,旨在封装实例化过程,使代码更具扩展性和灵活性。 ##...

    深入浅出设计模式(中文版)

    《深入浅出设计模式》是一本面向Java开发者的专业书籍,旨在帮助读者理解并熟练应用设计模式。设计模式是软件工程中的重要概念,它总结了在特定情境下解决常见问题的最佳实践,是经验丰富的开发者们智慧的结晶。这...

    深入浅出设计模式附书源码Java版源码

    深入浅出设计模式附书源码Java版源代码,是面向Java开发者的宝贵资源,旨在帮助他们理解和实践各种设计模式。这本书籍的源代码提供了实际的示例,使得学习过程更具互动性和实践性。 设计模式的核心思想是将常见的...

    免费电子书《深入浅出设计模式》PDF版.rar

    《深入浅出设计模式》是一本深受欢迎的编程书籍,主要涵盖了软件工程中常见的设计模式。设计模式是软件开发人员在解决特定问题时形成的可复用解决方案,它们代表了最佳实践,可以提高代码的可读性、可维护性和可扩展...

    深入浅出设计模式C#Java版

    本资源"深入浅出设计模式C#Java版"是针对这两种主流编程语言介绍设计模式的经典著作,旨在帮助开发者理解和应用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在C#中,可以使用`密封`和`...

    深入浅出java设计模式(高清中文PDF)

    文件列表中的《深入浅出设计模式(Java).pdf》是本书的主要内容,包含了对Java设计模式的详尽解析和实例演示,而\no.txt可能是书中的辅助资料或者说明。无论是初学者还是经验丰富的开发者,都应该深入研究设计模式,...

    深入浅出设计模式.rar

    《深入浅出设计模式》这个压缩包文件很可能是为了帮助读者理解和掌握设计模式的核心理念与应用场景,从而提升软件开发的效率和质量。 在软件开发过程中,设计模式如同一种通用的语言,让开发者能够快速交流复杂的...

    深入浅出设计模式(设计模式)

    ### 深入浅出设计模式之工厂模式详解 #### 引言 设计模式是软件工程领域中的一个重要概念,它代表了一系列被广泛接受的解决特定问题的方法论。设计模式不仅能够帮助开发者更好地组织代码,还能增强软件的复用性和可...

    深入浅出设计模式.pdf

    《深入浅出设计模式》是一本关于软件设计的经典著作,主要涵盖了面向对象设计中的核心设计模式。这本书旨在帮助读者理解并掌握如何在实际编程中应用这些模式,提升代码的可维护性和可扩展性。设计模式是经过时间和...

Global site tag (gtag.js) - Google Analytics