简单工场模式
package haohao;
public abstract class Person {
public void run(){}
public void eat(){}
}
package haohao;
public class Nvwa {
public static Person getPerson(String people){
Person APerson=null;
if(people.equalsIgnoreCase("M")){
APerson = new Man();
}else if(people.equalsIgnoreCase("W")){
APerson = new Woman();
}else if(people.equalsIgnoreCase("R")){
APerson = new Robot();
}
return APerson;
}
}
package haohao;
public class Man extends Person{
public void eat() {
System.out.println("男人潇洒吃..");
super.eat();
}
public void run() {
System.out.println("男人漂亮吃..");
super.run();
}
}
package haohao;
public class Robot extends Person{
public void eat() {
System.out.println("机器人吃..");
super.eat();
}
public void run() {
System.out.println("机器人跑步..");
super.run();
}
}
package haohao;
public class Woman extends Person{
public void eat() {
System.out.println("女人吃东西..");
super.eat();
}
public void run() {
System.out.println("女 人跑步..");
super.run();
}
}
package haohao;
public class NvwaMakePerson {
public static void main(String[] args) {
Person APerson;
APerson = Nvwa.getPerson("M"); //女娲造男人
APerson.eat();
APerson = Nvwa.getPerson("W"); //女娲造女人
APerson.eat();
APerson = Nvwa.getPerson("R"); //女娲造机器人
APerson.eat();
}
}
工场方法模式
package haohao;
//空调基类
abstract class AirCondition{
public abstract void show();
}
//工厂基类
abstract class Factory{
public abstract AirCondition getAirCondition();
}
//继承空调基类的海尔空调类
class HaierAirCondition extends AirCondition{
public void show(){
System.out.println("生产Haier空");
}
//继承空调基类的美的空调类
class MideaAirCondition extends AirCondition{
public void show(){
System.out.println("生产了Midea空调");
}
}
//继承工厂基类的海尔工厂类
class HaierFactory extends Factory{
public AirCondition getAirCondition(){
return new HaierAirCondition();
}
}
//继承工厂基类的美的工厂类
class MideaFactory extends Factory{
public AirCondition getAirCondition(){
return new MideaAirCondition();
}
}
public static class TestFactory {
public static void main(String[] args) {
AirCondition aircondition;//定义抽象基类
HaierFactory haierfactory=new HaierFactory();//海尔工厂对象
aircondition=haierfactory.getAirCondition();//抽象空调基类对象指向由海尔工厂生产的海尔空调对象
aircondition.show();//调用海尔空调类中实现的show方法
MideaFactory mideafactory=new MideaFactory();//美的工厂对象
aircondition=mideafactory.getAirCondition();//抽象空调基类对象指向由美的工厂生产的美的空调对象
aircondition.show();//调用美的空调类中实现的show方法
}
}
抽象工程模式
package chouxiang;
//RAM抽象基类
abstract class RAM{
public abstract void show();
}
//CPU抽象基类
abstract class CPU{
public abstract void show();
}
//工厂抽象基类
abstract class Plant{
public abstract RAM getRam();
public abstract CPU getCpu();
}
//继承RAM基类的PcRAM子类
class PcRAM extends RAM{
public void show(){
System.out.println(“生产了PcRAM”);
}
}
//继承RAM基类的MacRAM子类
class MacRAM extends RAM{
public void show(){
System.out.println(“生产了MacRAM”);
}
}
//继承CPU基类的PcCPU子类
class PcCPU extends CPU{
public void show(){
System.out.println(“生产了PcCPU”);
}
}
//继承CPU基类的MacCPU子类
class MacCPU extends CPU{
public void show(){
System.out.println(“生产了PcCPU”);
}
}
//继承Plant工厂基类的PcPlant子类
class PcPlant extends Plant{
public RAM getRam(){
return new PcRAM();
}
public CPU getCpu(){
return new PcCPU();
}
}
//继承Plant工厂基类的MacPlant子类
class MacPlant extends Plant{
public RAM getRam(){
return new MacRAM();
}
public CPU getCpu(){
return new MacCPU();
}
}
//具体实现类
public class TestAbstractFactory {
public static void main(String[] args){
RAM ram;//RAM抽象基类对象
CPU cpu;//CPU抽象基类对象
PcPlant pcfactory=new PcPlant();//PcPlant工厂子类对象
MacPlant macfactory=new MacPlant();//MacPlant工厂子类对象
ram=pcfactory.getRam();//RAM抽象基类对象指向PcPlant工厂子类对象生产的PcRAM对象
ram.show();//调用子类已实现方法
cpu=pcfactory.getCpu();//CPU抽象基类对象指向PcPlant工厂子类对象生产的PcCPU对象
cpu.show();//调用子类已实现方法
ram=macfactory.getRam();//RAM抽象基类对象指向MacPlant工厂子类对象生产的MacRAM对象
ram.show();//调用子类已实现方法
cpu=macfactory.getCpu();//CPU抽象基类对象指向MacPlant工厂子类对象生产的MacCPU对象
cpu.show();//调用子类已实现方法
}
}