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

/**@设计模式之简单工厂、工厂方法和抽象工厂
  *@西安科技大学
  *@软工1702班
  *@author  侯明会
  *@JAVA
*/
简单工厂模式:
package 简单工厂;
//建立一个人的接口
interface Person{
	public void get();
}
//男人对抽象接口的实现
class Man implements Person{
	public void get() {
		System.out.println("女娲造出男人");
	}
}
//女人对抽象接口的实现
class Woman implements Person{
	public void get() {
		System.out.println("女娲造出女人");
	}
}
//机器人对抽象接口的实现
class Robot implements Person{
	public void get() {
		System.out.println("女娲造出机器人");
	}
}
//建立女娲工厂
class Nvwa{
	public static Person getPerson(String type){
		if(type.equalsIgnoreCase("M")){
			return new Man();
		} else if(type.equalsIgnoreCase("W")){
	        return new Woman();
	    } else if(type.equals("R")) {
	    	return new Robot();
	    }else{
	        System.out.println("找不到相应的实例化类!");
	        return null;
	    }
	}
}
public class SimpleFactoryTest {
	public static void main(String[] args) {
		//实例化各种类型的人
		Person man=Nvwa.getPerson("M");
		Person woman=Nvwa.getPerson("W");
		Person robot=Nvwa.getPerson("R");
		Person dog=Nvwa.getPerson("dog");
		//女娲造人
		if(man!=null) {
			man.get();
		}
		if(woman!=null) {
			woman.get();
		}
		if(robot!=null) {
			robot.get();
		}
		if(dog!=null) {
			dog.get();
		}
	}
}

工厂方法模式:
package 工厂方法;
//新建一个空调的接口
interface AirCondition{
	public void get();
}
//海尔空调实现空调接口
class HaierAirCondition implements AirCondition{
	public void get() {
		System.out.println("海尔工厂生产海尔空调");
	}
}
//美的空调实现空调接口
class MideaAirCondition implements AirCondition{
	public void get() {
		System.out.println("美的工厂生产美的空调");
	}
}
//建立海尔工厂
class Haier{
	public static AirCondition getHaierAirCondition(String type) {
		if(type.equals("Haier")) {
			return new HaierAirCondition();
		}else{
	        System.out.println("找不到相应的海尔实例化类!");
	        return null;
	    }
	}
}
//建立美的工厂
class Midea{
	public static AirCondition getMideaAirCondition(String type) {
		if(type.equals("Midea")) {
			return new MideaAirCondition();
		}else{
	        System.out.println("找不到相应的美的实例化类!");
	        return null;
	    }
	}
}
public class FactoryTest {
	public static void main(String[] args) {
		//实例化各种空调
		AirCondition haier=Haier.getHaierAirCondition("Haier");
		AirCondition h=Haier.getHaierAirCondition("h");
		AirCondition midea=Midea.getMideaAirCondition("Midea");
		AirCondition m=Midea.getMideaAirCondition("m");
		//生产各种空调
		if(haier!=null) {
			haier.get();
		}
		if(h!=null) {
			h.get();
		}
		if(midea!=null) {
			midea.get();
		}
		if(m!=null) {
			m.get();
		}
	}
}

抽象工厂模式:
package 抽象工厂;
//新建立一个抽象配件生产工厂
interface PartFactory{
	public Pc CreatePc();
	public Mac CreateMac();
}
//CPU工厂
class CPUFactory implements PartFactory{
	public Pc CreatePc() {
		return new PcCPU();
	}
	public Mac CreateMac() {
		return new MacCPU();
	}
}
//RAM工厂
class RAMFactory implements PartFactory{
	public Pc CreatePc() {
		return new PcRAM();
	}
	public Mac CreateMac() {
		return new MacRAM();
	}
}
//新建立一个产品族Pc
interface Pc{
	public void getPc();
}
//新建立一个产品族Mac
interface Mac{
	public void getMac();
}
//新建立一个具体产品PcCPU
class PcCPU implements Pc{
	public void getPc() {
		System.out.println("生产PcCPU");
	}
}
//新建立一个具体产品PcRAM
class PcRAM implements Pc{
	public void getPc() {
		System.out.println("生产PcRAM");
	}
}
//新建立一个具体产品MacCPU
class MacCPU implements Mac{
	public void getMac() {
		System.out.println("生产MacCPU");
	}
}
//新建立一个具体产品MacRAM
class MacRAM implements Mac{
	public void getMac() {
		System.out.println("生产MacRAM");
	}
}
public class AbstractFactoryTest {
	public static void main(String[] args) {
		PartFactory partfactory1;
		PartFactory partfactory2;
		Pc pc;
		Mac mac;
		partfactory1=new CPUFactory();
		pc=partfactory1.CreatePc();
		pc.getPc();
		mac=partfactory1.CreateMac();
		mac.getMac();
		partfactory2=new RAMFactory();
		pc=partfactory2.CreatePc();
		pc.getPc();
		mac=partfactory2.CreateMac();
		mac.getMac();
	}
}

运行结果:
1.简单工厂
在这里插入图片描述
2.工厂方法
在这里插入图片描述
3.抽像工厂
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值