MyException - 我的异常网
当前位置:我的异常网» 设计模式 » 工场模式(JAVA设计模式)

工场模式(JAVA设计模式)

www.MyException.Cn  网友分享于:2013-04-03  浏览:3次
工厂模式(JAVA设计模式)

1.简单工厂模式:我创建一个“上帝类”创造出所有的类。

2.工厂方法模式:将工厂类进行抽象,创建不是类型的工厂类。

3.抽象工厂模式:创建一个抽象的工厂父类,适合一系列产品的创建。


1.简单工厂模式

public interface Car {
	public void run();
}

public class Bmw implements Car {

	public void run() {
		System.out.println("Bmw run()...");
	}

}
public class Benz implements Car{

	public void run() {
		System.out.println("Benz run()...");
	}

}
/**
 * 简单工厂HelloWorld
 */
public class SimpleFactory {
	public static Car createCar(String type) {
		if ("bmw".equals(type)) {
			return new Bmw();
		} else {
			return new Benz();
		}
	}

	public static void main(String[] args) {
		Car c = SimpleFactory.createCar("bmw");
		c.run();
	}
}


2.工厂方法模式

public interface Factory {
	public Car create();
}
public class BmwFactory implements Factory{

	public Car create() {
		return new Bmw();
	}

}
public class BenzFactory implements Factory {

	public Car create() {
		return new Benz();
	}

}
public interface Car {
	public void run();
}
public class Bmw implements Car{
	public void run() {
		System.out.println("Bmw run()...");
	}
}
public class Benz implements Car {
	public void run() {
		System.out.println("Benz run()...");
	}
}
public class Test {
	public static void main(String[] args) {
		Factory factory = new BenzFactory();//可以生产各种各样的奔驰。
		Car c = factory.create();
		c.run();
	}
}

3.抽象工厂模式
public abstract class AbstractFactory {
	abstract Button createButton();
	abstract Panel createPanel();
}
public class BlueSkinFactory extends AbstractFactory {
	@Override
	Button createButton() {
		return new BlueButton();
	}

	@Override
	Panel createPanel() {
		return new BluePanel();
	}
}
public class RedSkinFactory extends AbstractFactory{
	@Override
	Button createButton() {
		return new RedButton();
	}

	@Override
	Panel createPanel() {
		return new RedPanel();
	}
}
public interface Button {
	public void createButton();
}
public interface Panel {
	public void createPanel();
}
public class BlueButton implements Button{

	public void createButton() {
		System.out.println("create blue button");
	}
	
}
public class BluePanel implements Panel{

	public void createPanel() {
		System.out.println("create Blue Panel");
	}

}
public class RedButton implements Button{

	public void createButton() {
		System.out.println("create Red Button");
	}

}
public class RedPanel implements Panel{

	public void createPanel() {
		System.out.println("create Red Panel");
	}

}
public class Test {
	public static void main(String[] args) {
		AbstractFactory f = new RedSkinFactory();//只需要修改这句就可以实现换皮肤功能。如果写在配置文件中就更方便了。
		Button b = f.createButton();
		b.createButton();
		Panel p = f.createPanel();
		p.createPanel();
	}
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有