Java设计模式之简单工厂、方法工厂、抽象方法模式

本文深入探讨设计模式的应用,通过女娲造人的实例介绍简单工厂模式,空调生产的工厂方法模式,以及电脑配件生产的抽象工厂模式。通过具体代码实现,帮助读者理解并掌握三种设计模式。

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

一.实验目的

1) 熟悉建模工具。

2) 掌握简单工厂模式、工厂方法模式、抽象工厂模式,并进行设计应用。

二.题目分析

(1)简单工厂模式

使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。

(2)工厂方法模式

海尔工厂(Haier)生产海尔空调(HaierAirCondition),美的工厂(Midea)生产美的空调(MideaAirCondition) 。使用工厂方法模式描述该场景,绘制类图并编程实现。

(3)抽象工程模式

电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。

                                                                  

三.测试结果

简单工厂:

工厂方法:

抽象工厂

四.程序实现

//简单工厂模式:女娲造人
interface Person {
	public void makePerson();
}
class Man implements Person {
	public void makePerson() {
	System.out.println("出现了男人");
	}
}
class Woman implements Person {
	public void makePerson() {
	System.out.println("出现了女人");
	}
}
class Robot implements Person{
	public void makePerson() {
		System.out.println("出现了机器人");
	}	
}
class Nvwa {
	public static Person getPerson(String arg) {
		Person person=null;
		if(arg.equalsIgnoreCase("M")) {
		person=new Man();
		System.out.println("女娲要制造男人了");
		}
		else if(arg.equalsIgnoreCase("W"))
		{
			person=new Woman();
			System.out.println("女娲要制造女人了");
		}
		else if(arg.equalsIgnoreCase("R"))
		{
			person=new Robot();
			System.out.println("女娲要制造机器人了");
		}
		return person;
	}
}

public class Makeperson {
	public static void main(String[] args) {
		Person p,q;
		p=Nvwa.getPerson("M");
		p.makePerson();
		q=Nvwa.getPerson("R");
		q.makePerson();
	}

}



//工厂方法模式:工厂生产空调
package AirCondition;
interface AirCondition{
	public void play();
}
interface AirConditionFactory {
	AirCondition produceAirCondition();
}
class HaierAirCondition implements AirCondition{
	public void play() {
		System.out.println("海尔空调使用中......");
	}
}
class MideaAirCondition implements AirCondition{
	public void play() {
		System.out.println("美的空调使用中......");
	}
}
class HaierAirConditionFactory implements AirConditionFactory{
	public AirCondition produceAirCondition() {
		System.out.println("海尔工厂生产海尔空调");
		return new HaierAirCondition();
	}	
}
class MideaAirConditionFactory implements AirConditionFactory{
	public AirCondition produceAirCondition() {
		System.out.println("美的工厂生产美的空调");
		return new MideaAirCondition();
	}	
}

public class Factory {
	public static void main(String[] args) {
		MideaAirConditionFactory factory=new MideaAirConditionFactory();
		MideaAirCondition aircondition=new  MideaAirCondition();		
	    aircondition.play();
	    factory.produceAirCondition();	
	}
}



//抽象工厂模式:产品族,产品等级
interface CPU{
	public void run();
}
interface RAM{
	public void save();
}
interface Factory{
	public RAM produceRAM();
	public CPU pruduceCPU();	
}
class PcCPU implements CPU{
	public void run() {
		System.out.println("PcCPU运行");
	}
}
class MacCPU implements CPU{
	public void run() {
		System.out.println("MacCPU运行");
	}
}
class PcRAM implements RAM{
	public void save() {
		System.out.println("PcRAM存储");
	}
}
class MacRAM implements RAM{
	public void save() {
		System.out.println("MacRAM存储");
	}
}
class PcFactory implements Factory {
	public CPU pruduceCPU() {
		System.out.println("Pc工厂生产PcCPU");
		return new PcCPU();
	}
	public PcRAM produceRAM() {
			System.out.println("Pc工厂生产PcRAM");
			return new PcRAM();
		}
}
class MacFactory implements Factory {
	public CPU pruduceCPU() {
		System.out.println("Mac工厂生产MacCPU");
		return new MacCPU();
	}
	public MacRAM produceRAM() {
		System.out.println("Mac工厂生产MacRAM");
		return new MacRAM();
	}
}
public class Test {
	public static void main(String[] args) {
		Factory pcfactory;
		CPU cpu;
		RAM ram;
		pcfactory=new PcFactory();
		cpu=pcfactory.pruduceCPU();
		ram=pcfactory.produceRAM();
		cpu.run();
		ram.save();
		System.out.println("================");
		Factory macfactory;
		macfactory=new MacFactory();
		cpu=macfactory.pruduceCPU();
		ram=macfactory.produceRAM();
		cpu.run();
		ram.save();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值