一.实验目的
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();
}
}