《有些模式》- 抽象工厂

 package com.macrotea.pattern.factory.abstr;

import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;


public abstract class AbstractFactory {
	public abstract Food createFood();
	public abstract Vehicle createVehicle();
	public abstract Weapon createWeapon();
}

 

 

package com.macrotea.pattern.factory.ext;

import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.sub.DongfengCar;
import com.macrotea.pattern.factory.sub.LongjingTea;
import com.macrotea.pattern.factory.sub.XiaolongPlane;

public class ChinaFactory extends AbstractFactory{

	@Override
	public Food createFood() {
		return new LongjingTea();
	}

	@Override
	public Vehicle createVehicle() {
		return new DongfengCar();
	}

	@Override
	public Weapon createWeapon() {
		return new XiaolongPlane();
	}


}

 

 

 

package com.macrotea.pattern.factory.ext;

import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.sub.Car;
import com.macrotea.pattern.factory.sub.Gun;
import com.macrotea.pattern.factory.sub.Nut;

public class DefaultFactory extends AbstractFactory{

	@Override
	public Food createFood() {
		return new Nut();
	}

	@Override
	public Vehicle createVehicle() {
		return new Car();
	}

	@Override
	public Weapon createWeapon() {
		return new Gun();
	}


}

 

 

package com.macrotea.pattern.factory.base;

public abstract class Food {
	public abstract void eat();
}

 

 

package com.macrotea.pattern.factory.base;

public abstract class Vehicle {
	public abstract void run();
}

 

 

package com.macrotea.pattern.factory.base;

public abstract class Weapon {
	public abstract void shoot();
}

 

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Vehicle;

public class Car extends Vehicle{

	@Override
	public void run() {
		System.out.println("Car-run()");
	}

}

 

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Vehicle;

public class DongfengCar extends Vehicle {

	@Override
	public void run() {
		System.out.println("东风牌货车开动...");
	}

}

 

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Weapon;

public class Gun extends Weapon{

	@Override
	public void shoot() {
		System.out.println("Gun-shoot()");
	}

}

 

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Food;

public class LongjingTea extends Food {

	@Override
	public void eat() {
		System.out.println("来杯龙井...");
	}

}

 

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Food;

public class Nut extends Food{

	@Override
	public void eat() {
		System.out.println("Nut-eat()");
	}

}

 

package com.macrotea.pattern.factory.sub;

import com.macrotea.pattern.factory.base.Weapon;

public class XiaolongPlane extends Weapon {

	@Override
	public void shoot() {
		System.out.println("枭龙歼灭机射击...");
	}

}

 

 

package com.macrotea.pattern.factory.test;

import com.macrotea.pattern.factory.abstr.AbstractFactory;
import com.macrotea.pattern.factory.base.Food;
import com.macrotea.pattern.factory.base.Vehicle;
import com.macrotea.pattern.factory.base.Weapon;
import com.macrotea.pattern.factory.ext.DefaultFactory;

public class Mainer {
	public static void main(String[] args) {
		/*默认工厂*/
		AbstractFactory defFactory=new DefaultFactory();
		//食物
		Food food=defFactory.createFood();
		food.eat();
		//交通工具
		Vehicle vehicle=defFactory.createVehicle();
		vehicle.run();
		//武器
		Weapon weapon=defFactory.createWeapon();
		weapon.shoot();
		
/*		
		中国工厂
		AbstractFactory cnFactory=new ChinaFactory();
		//食物
		Food food=cnFactory.createFood();
		food.eat();
		//交通工具
		Vehicle vehicle=cnFactory.createVehicle();
		vehicle.run();
		//武器
		Weapon weapon=cnFactory.createWeapon();
		weapon.shoot();
		*/
		
	}

}

 

 

 

抽象工厂方便控制产品系列

普通工厂方便控制产品种类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值