/**@设计模式之简单工厂、工厂方法和抽象工厂
*@西安科技大学
*@软工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.抽像工厂