`

设计模式之-工厂方法-FactoryMethod

阅读更多

定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

 

适用性:

1.当一个类不知道它所必须创建的对象的类的时候。

2.当一个类希望由它的子类来指定它所创建的对象的时候。

3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
 

 

package pack.java.iworkfactory;

public interface IWork {
	/**
	 * 开始工作方法;
	 */
	public void doWork();
}

 

 

 

package pack.java.iworkfactory;

public interface IWorkFactory {
	/**
	 * 获取工作;
	 * @return
	 */
	public IWork getWork();
}

 

 

package pack.java.workfactoryimpl;

import pack.java.iworkfactory.IWork;
import pack.java.iworkfactory.IWorkFactory;

public class StudentFactory implements IWorkFactory{

	public IWork getWork() {
		// TODO Auto-generated method stub
		return new StudentWork();
	}

}

 

 

package pack.java.workfactoryimpl;

import pack.java.iworkfactory.IWork;

public class StudentWork implements IWork {

	public void doWork() {
		// TODO Auto-generated method stub
		System.out.println("学生做作业!");
	}
}

 

 

package pack.java.workfactoryimpl;

import pack.java.iworkfactory.IWork;
import pack.java.iworkfactory.IWorkFactory;


public class TeacherFactory implements IWorkFactory{

	public IWork getWork() {
		// TODO Auto-generated method stub
		return new TeacherWork();
	}

}

 

 

package pack.java.workfactoryimpl;

import pack.java.iworkfactory.IWork;

public class TeacherWork implements IWork {

	public void doWork() {
		// TODO Auto-generated method stub
		System.out.println("老师批改作业!");
	}

}

 

 

package pack.java.testfactorymethod;

import pack.java.iworkfactory.IWorkFactory;
import pack.java.workfactoryimpl.StudentFactory;
import pack.java.workfactoryimpl.TeacherFactory;

public class TestFactoryMethod {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//学生工厂方法;
		IWorkFactory studentFactory =  new StudentFactory();
		//学生开始工作;
		studentFactory.getWork().doWork();
		
		//老师工厂方法;
		IWorkFactory teacherFactory  = new TeacherFactory();
		//老师开始工作;
		teacherFactory.getWork().doWork();
	}
}

 

 

 

运行结果:

学生做作业!
老师批改作业!

分享到:
评论

相关推荐

    我讲设计模式--工厂方法

    "工厂方法"(Factory Method)是面向对象设计中的一种经典设计模式,它属于创建型模式,其主要目的是为了抽象产品的创建过程,使得具体的创建过程与使用产品的代码解耦。这个模式在《设计模式:可复用面向对象软件的...

    C++的设计模式之工厂方法模式(Factory Method)

    C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)

    c++设计模式-工厂方法模式

    在压缩包中的`FactoryMethod`文件很可能包含了示例代码,这些代码演示了如何在实际的Qt项目中运用工厂方法模式,例如定义工厂类、产品类以及它们之间的关系,以及如何在主程序中调用这些工厂来创建和使用对象。...

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

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

    设计模式精解-GoF-23种设计模式解析--附C++源代码

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

    设计模式C++学习之工厂方法模式(Factory Method)

    设计模式C++学习之工厂方法模式(Factory Method)

    工厂方法模式(FactoryMethod)

    工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建对象,而具体的创建过程被延迟到了子类中,使得子类可以在不修改原有代码的基础上决定...

    iOS设计模式-工厂方法

    工厂方法(Factory Method)是面向对象设计模式中的一种,属于创建型模式。它定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法让一个类的实例化推迟到子类。 **概念理解** 1. **工厂角色...

    设计模式----工厂模式

    工厂模式是面向对象设计中最为人熟知的设计模式之一,属于创建型模式,其主要目标是封装对象的创建过程,使得客户端无需关心对象的具体创建细节,只需通过工厂接口来获取所需的对象。 ### 1. 工厂模式的基本概念 ...

    设计模式-工厂方法代码

    工厂方法(Factory Method)是创建型设计模式之一,属于行为模式。它的主要作用是定义一个创建对象的接口,让子类决定实例化哪一个类。这样,工厂方法可以使一个类的实例化延迟到其子类进行,提供了一种将具体创建...

    设计模式培训-factorymethod

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

    创建型模式之工厂方法模式(Factory Method Pattern)

    工厂方法模式是面向对象设计模式中的一个核心模式,属于创建型模式。它的主要目的是通过引入一个工厂接口,将具体的对象创建过程封装起来,使得客户端在使用时无须关心产品类的确切实现,只需要通过工厂来获取所需的...

    C++设计模式--基于Qt4开源跨平台开发框架

    创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

    设计模式之工厂方法模式

    工厂方法模式是设计模式中的创建型模式之一,它在软件工程中扮演着非常重要的角色,尤其是在C#这样的面向对象编程语言中。工厂方法模式提供了一种封装对象创建过程的方法,使得具体的创建过程延迟到子类中进行,从而...

    设计模式精解-GoF23种设计模式解析附C++实现源码

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

Global site tag (gtag.js) - Google Analytics