`
旭冬冬
  • 浏览: 12810 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

工厂模式分析----Factory Pattern

阅读更多
工厂模式定义:实例化对象,用工厂方法代替new操作。
工厂模式是我们最常用的模式了,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。那么具体怎么用呢?代码奉上

/**
 * 生产枪的工厂接口
 * 
 * @author Star
 * 
 */
public interface GunFactory {
	public Gun createFootGun();// 创建步枪

	public Gun createHandGun();// 创建手(***)枪

	public Gun createQuickGun();// 创建冲锋枪
}


/**
 * 生产便宜一类枪
 * 
 * @author Star
 * 
 */
public class CheapGunFactory implements GunFactory {

	public Gun createFootGun() {
		return new FootGun("小米加步枪", 50);
	}

	public Gun createHandGun() {
		return new HandGun("三八大盖", 20);
	}

	public Gun createQuickGun() {
		return new QuickGun("解放军冲锋枪", 100);
	}

}

/**
 * 贵的一类枪
 * @author Star
 *
 */
public class ExpensiveGunFactory implements GunFactory {

	public Gun createFootGun() {

		return new FootGun("德国造步枪", 150);
	}

	public Gun createHandGun() {
		return new FootGun("美国造手(***)枪", 120);

	}

	public Gun createQuickGun() {
		return new FootGun("AK47", 250);

	}

}

枪的具体类
/**
 * 枪的接口类
 * 
 * @author Star
 * 
 */
public abstract class Gun {
	protected String gunName;// 枪名
	protected int power;// 杀伤力

	// 射击
	public void shoot() {
       System.out.println(gunName+" 射击的杀伤力为: "+power);
	}

	public Gun(String gunName, int power) {
		this.gunName = gunName;
		this.power = power;
	}
}

/**
 * 步枪
 * @author Star
 *
 */
public class FootGun extends Gun{

	public FootGun(String gunName, int power) {
		super(gunName, power);
	}

	//射击
	public void shoot() {
		super.shoot();
	}

}

/**
 * 手(***)枪
 * @author Star
 *
 */
public class HandGun extends Gun {

	public HandGun(String gunName, int power) {
		super(gunName, power);
	}

	public void shoot() {
		super.shoot();
	}

}

/**
 * 冲锋枪
 * @author Star
 *
 */
public class QuickGun extends Gun {

	public QuickGun(String gunName, int power) {
		super(gunName, power);
	}

	public void shoot() {
		super.shoot();
	}
}

主函数测试类
public class FactoryMain {

	public static void main(String[] args) {
		GunFactory factory = new CheapGunFactory();
		Gun gun = factory.createHandGun();
		gun.shoot();
		gun = factory.createFootGun();
		gun.shoot();
		gun = factory.createQuickGun();
		gun.shoot();

		factory = new ExpensiveGunFactory();
		gun = factory.createHandGun();
		gun.shoot();
		gun = factory.createFootGun();
		gun.shoot();
		gun = factory.createQuickGun();
		gun.shoot();

	}

}

分享到:
评论

相关推荐

    A-classic-factory-pattern-example.rar_factory

    这个"A-classic-factory-pattern-example.rar_factory"压缩包中包含的"一个工厂模式的简单但典型的例子"是为了帮助初学者理解和应用工厂模式而设计的。下面我们将详细探讨工厂模式的核心概念、工作原理以及其在实际...

    design-pattern-java.pdf

    六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...

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

    1. **简单工厂模式**(Simple Factory Pattern):由一个静态方法或单例类负责创建对象,适用于对象种类较少且不会频繁变动的情况。 2. **工厂方法模式**(Factory Method Pattern):定义一个创建对象的接口,让...

    抽象工厂模式(Abstract Factory Pattern)

    ### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的简单工厂模式与工厂方法模式。这两种模式主要关注于解决对象创建过程中“new”操作的问题,使得创建...

    Java设计模式教程 - Java设计模式 - 工厂模式

    在压缩包"Factory-Pattern"中,可能包含了相关的代码示例,这些示例可能涵盖了简单工厂、工厂方法以及抽象工厂的实现。通过学习这些代码,你可以更好地理解工厂模式的工作原理,以及如何在自己的项目中应用这些模式...

    设计模式培训-factorymethod

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

    设计模式-简单工厂模式-例题

    简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,易于扩展。在简单工厂模式中,存在一个专门用于创建对象的工厂类,它负责根据...

    [创建型模式] head first 设计模式之工厂模式(Factory)

    在软件设计领域,工厂模式是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。...通过对这两个文件的分析,你可以深入理解工厂模式的实现细节,并掌握如何在C++项目中应用这一设计模式。

    工厂模式代码

    1. 简单工厂模式(Simple Factory Pattern):也称为静态工厂方法模式,通过一个静态方法来创建对象,该静态方法根据传入的参数返回不同的实例。 2. 工厂方法模式(Factory Method Pattern):属于多态性设计模式,...

    简单工厂模式,工厂方法模式,抽象工厂模式

    简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...

    java三种工厂模式文档+三个实例.rar

    1. **简单工厂模式(Simple Factory Pattern)**: - 简单工厂模式是一种静态工厂方法模式,它包含一个静态工厂类,负责创建对象。在这个例子中,可能有一个名为`Factory`的类,其中包含一个静态方法,如`...

    IOS应用源码——taylanpince-factory-8449aa4.rar

    在软件工程中,“Factory”通常关联于工厂模式(Factory Pattern),这是一种创建型设计模式,用于提供一个接口来创建一系列相关的对象,而无需指定它们的具体类。因此,我们可以推测这个项目可能重点展示了如何在...

    抽象工厂模式abstractFactory

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建对象集合的接口,而无需指定具体的产品类型。这种模式适用于当系统需要在不同平台或环境中创建一组相关或相互依赖的对象时,而这些...

    工厂方法模式和抽象工厂模式

    在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...

    设计模式之三种工厂模式

    "Factory"这个压缩包文件很可能包含了各种工厂模式的实现代码,可以逐一分析每个模式的结构,理解它们如何工作,并尝试在自己的项目中应用。在实际开发中,选择哪种工厂模式取决于需求的复杂程度和未来的扩展性需求...

    designPattern-java.pdf

    这一部分主要介绍了工厂模式、抽象工厂模式、单例模式、建造者模式以及原型模式。 ##### 工厂模式 工厂模式是一种常用的创建型模式,其核心思想是在不指定具体类的情况下创建一个对象。这种模式通过定义一个用于...

    Pattern-Factory

    通过分析"Pattern-Factory"项目,开发者可以学习如何在C#中应用工厂模式,了解其在不同场景下的优缺点,以及如何根据需求选择合适的工厂实现。此外,该项目可能还涉及其他设计模式的组合使用,例如策略模式、单例...

    Pattern-Oriented Software Architecture V2

    - **工厂模式(Factory Pattern)**:定义创建对象的接口,但让子类决定实例化哪一个类。使得一个类的实例化延迟到其子类。 ##### 2. 事件处理模式 - **观察者模式(Observer Pattern)**:定义了对象间的一种一对...

    pattern-guidance, Design pattern guide (PHP、Golang implementation).zip

    创建型模式关注对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory)。结构型模式涉及如何组合对象和类,例如适配器模式(Adapter)、装饰器模式(Decorator)和...

    Unity-Design-Pattern-master.zip.zip

    2. **工厂模式(Factory)**:用于创建对象的接口,让子类决定实例化哪一个类。在Unity中,可以用于动态生成游戏对象,如敌人、道具等,根据不同的类型参数返回不同的预制体实例。 3. **观察者模式(Observer)**:...

Global site tag (gtag.js) - Google Analytics