Java 设计模式-工厂模式

本文深入探讨Java中的工厂模式,通过示例代码展示了如何利用该模式实现面向接口编程,提高代码的扩展性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始看Java的设计模式。

对于Java来说,更重要得是设计的思想,和实现的架构,其次,才是技术细节。毕竟,Java语言的类库做的相当不错了,还有很多免费的工具包,另外,不用考虑内存的问题(递归造成的堆问题不在此列)因此在效率上问题不用特别操心,工作的重心应当放在实现上。所以,设计模式对于Java,就显得尤为重要。

工厂模式是一种面向接口编程的典型例子,他的代码量是增多了,而且看上去更为复杂,但是对于客户端来说,操作的过程更加轻松了,而且可以很轻松的扩展,复用。这就是面向对象思想的核心之一。

好了,先不废话,谈谈Factory模式。

FactoryMethod是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时我们就需要用到Factory Method 模式了.简单说来,Factory Method可以根据不同的条件产生不同的实例,当然这些不同的实例通常是属于相同的类型,具有共同的父类.Factory Method把创建这些实例的具体过程封装起来了,简化了客户端的应用,也改善了程序的扩展性,使得将来可以做最小的改动就可以加入新的待创建的类. 通常我们将Factory Method作为一种标准的创建对象的方法,当发现需要更多的灵活性的时候,就开始考虑向其它创建型模式转化

我写了几个类,其实一看,就明白Factory模式是怎样工作的了

首先,定义一个父类


abstract class Factory {



	public String name;

	

	public Factory(String sName){

		name = sName;

	}

	

	public abstract void open();

	

	public abstract void close();

	

}
其次,写他的子类。

public class ChemicalFactory extends Factory {



	public ChemicalFactory(String sName) {

		

		super(sName);

		

	}



	public void close() {

		

		System.out.println("The Chemical Factory is Closing...");

		

	}



	@Override

	public void open() {

		

		System.out.println("The Chemical Factory is Opening...");

		

	}



	

}

public class IronFactory extends Factory{



	public IronFactory(String sName) {

		

		super(sName);

		

	}



	public void close() {

		

		System.out.println("The Iron Factory is Closing...");

		

	}



	@Override

	public void open() {

		

		System.out.println("The Iron Factory is Opening...");

		

	}



}
这是产品类,再写创建产品的父类
public abstract class CreateFactory {

	protected abstract Factory implentionFactory(String sName);

	

	public void anOperation(String sName){

		Factory factory = implentionFactory(sName) ;

		

		System.out.println("Current Factory is :"+factory.name);

		

		factory.open();

		

		factory.close();

	}

}



具体创建的产品,需要继承这个类


public class CreateChemicalFactory extends CreateFactory {



	@Override

	protected Factory implentionFactory(String sName) {

		

		return new ChemicalFactory(sName+"create by chemical factory");

		

	}



	

}
 
public class CreateIronFactory extends CreateFactory{



	@Override

	protected Factory implentionFactory(String sName) {



		return new IronFactory(sName + "Create by iron factory");

		

	}

	

}

最后,一个main运行这些

 

public class MainClass {

	public static void main(String[] args) {

		CreateFactory factoryA = new CreateChemicalFactory();

		CreateFactory factoryB = new CreateIronFactory();



		factoryA.anOperation("One ");

		factoryB.anOperation("Two ");

	}

}

 

 

现在,当你需要新添加种类的时候,只需要去增加具体的产品类和产生他们的类了,其他的地方,抽象类都已经规定好了,不用做 任何修改。工厂类的好处就是将类和创建类的动作分开,并且将种类分开,各司其职,不用牵一发而动全身,这就是大规模开发中最大的好处。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值