`
men4661273
  • 浏览: 277990 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java设计模式- Factory Method(工厂方法)模式

    博客分类:
  • java
阅读更多
    Factory Method定义
    工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中
     工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。下面是工厂方法模式的缩略类图:
    


      在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做。这个核心工厂则变为抽象工厂角色,仅负责给出具工厂子类必须实现的接口,而不接触哪一产品创建的细节。
    这种抽象的结果,使这种工厂方法模式可以用来允许系统不修改具体工厂角色的情况下引进新产品,这一特点无疑使得工厂模式具有超过简单工厂模式的优越性。
    一般结构如下:
 


   和抽象工厂模式不同的是,工厂方法中每个工厂对应的一个具体的产品类,比如A类门工厂,只会产生A类门,而在抽象工厂中,每个工厂生产的是一个产品系,比如工程A(上篇中的车间A),既生产车门,又生产车轮。个人认为抽象工厂模式是工厂方法模式的一个补充,每个工厂可以生产一系列的产品

package factoryMethod;

public interface Door {

}


package factoryMethod;

public class DoorA implements Door {
public DoorA() {
System.out.println("制造了一个DoorA");	// TODO Auto-generated constructor stub
}
}


package factoryMethod;

public class DoorB implements Door {

	public DoorB() {
	System.out.println("制造了一个DoorB");
	// TODO Auto-generated constructor stub
	}
}


package factoryMethod;

/*
 * A类门工厂
 */
public class DoorAFactory implements DoorFactory {

	public Door factory() {
		
		return new DoorA();
	}

}


package factoryMethod;

/*
 * B类门工厂
 */
public class DoorBFactory implements DoorFactory {

	public Door factory() {
		// TODO Auto-generated method stub
		return new DoorB();
	}

}


package factoryMethod;

/*
 * 工厂接口
 */
public interface DoorFactory {

	public Door factory();
}



package factoryMethod;


public class Test {

public static void main(String[] args) {
	DoorFactory a = new DoorAFactory();
	DoorFactory b = new DoorBFactory();
	a.factory();
	b.factory();
}
	
	
}





  • 大小: 2.3 KB
  • 大小: 3.7 KB
  • 大小: 3.9 KB
分享到:
评论

相关推荐

    java设计模式---诙谐易懂版

    例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    Java设计模式是面向对象编程中的重要概念,它们是解决常见问题的经验总结,为代码的可重用性、可维护性和可扩展性提供了指导。这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory ...

    【Java设计模式-源码】Factory Method Pattern in Java: 使用多态制造增强灵活性

    学习Java中的工厂方法模式,探索示例、用途、好处以及它如何增强代码的灵活性和可维护性。 **二、别名** * Virtual Constructor **三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的...

    设计模式培训-factorymethod

    在众多设计模式中,“工厂方法模式”(Factory Method Pattern)尤为突出,它是一种创建型设计模式,用于解决在类的实例化过程中,如何避免硬编码的问题,同时保持系统的灵活性与可扩展性。 #### 工厂方法模式的...

    Java设计模式-图解-附代码

    ### Java设计模式详解 在软件工程领域,设计模式是一套被广泛接受的解决方案,用于解决在软件设计过程中遇到的常见问题。《Java设计模式-图解-附代码》是一部全面介绍设计模式在Java语言中应用的教程,通过图示与...

    JAVA设计模式-day2.pdf

    JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...

    JAVA设计模式---100%推荐

    创建型模式涉及对象的实例化过程,如单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。结构型模式关注如何将类或对象组合成更大的结构,比如适配器(Adapter)、装饰器(Decorator)...

    在Java中应用设计模式-FactoryMethod

    在设计模式中,FactoryMethod也是比较简单的一个,但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子,它是最重要的模式之一.在很多地方我们都会看到xxxFactory这样命名的类,那么,什么是FactoryMethod,...

    设计模式之“工厂方法模式[Factory Method Pattern]”

    今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...

    JAVA设计模式-设计模式公司出品

    JAVA设计模式是编程领域中非常重要的概念,它为软件开发人员提供了在特定情境下解决常见问题的模板。设计模式公司出品的《JAVA设计模式》书籍,详细介绍了多种设计模式,适合不同水平的程序员学习和使用。 首先,...

    JAVA设计模式--入门

    3. 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。 4. 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定它们的具体类。 5. ...

    java设计模式----源代码

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可扩展性。本压缩包包含的源代码涵盖了多个经典的设计模式,接下来将对这些模式进行详细介绍。 1....

    java与设计模式--通俗易懂的介绍

    2. **工厂方法模式**(Factory Method Pattern):相比简单工厂模式,工厂方法模式将对象的创建委托给子类,使得核心工厂类更加抽象,不涉及具体产品的创建。这提高了系统的扩展性。例如: ```java public abstract...

    java-sington-factory-proxy 开发模式

    工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式,适用于需要频繁创建不同类型的对象,且对象的创建过程复杂的情况。 ```java // 简单工厂模式示例 public class AnimalFactory { public static Animal ...

Global site tag (gtag.js) - Google Analytics