[code="java"]
interface Car{
public void start();
public void stop();
}
class Benz implements Car{
public void start(){
System.out.println("Benz开动了。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。");
}
}
class Ford implements Car{
public void start(){
System.out.println("Ford开动了。。。。");
}
public void stop(){
System.out.println("Ford停车了。。。");
}
}
class BigBus implements Car{
public void start(){
System.out.println("大巴开车了。。。。");
}
public void stop(){
System.out.println("大巴停车了。。。。");
}
}
class MiniBus implements Car{
public void start(){
System.out.println("小巴开车了。。。。");
}
public void stop(){
System.out.println("小巴停车了。。。。");
}
}
/**
*这个接口有什么用途?
*如果去了这个接口,下面CarFactory和BusFactory都不实现这个接口功能是一样的?怎么理解这个接口?
*/
interface AbstractFactory{
}
class CarFactory implements AbstractFactory{
public Car getCar(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
}
class BusFactory implements AbstractFactory{
public Car getBus(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
}
public class Factorydemo02 {
public static void main(String[] args) {
//CarFactory cf=new CarFactory();
BusFactory bf=new BusFactory();
Car c=null;
//c=cf.getCar("Benz");
c=bf.getBus("BigBus");
c.start();
c.stop();
}
}
[/code]
你想实现的是工厂方法模式吧,不过你这样写我很无语。
那个接口是标识性的接口,只是用来为个具体的产品角色提供一个共同类型而已。
你那个 public inteface AbstractFactory{}[b]标识性接口[/b]一直到最后的代码可以改写成这样。
//定义一个工厂接口提供公用的工厂方法
[code="java"]
public interface AbstractFactory{
/**
* 工厂方法
*/
Car factory();
}
//定义小汽车的实现
public class SmallCar implements Car{
public SmallCar (){
system.out.print("我的小汽车");
}
}
//定义公共汽车实现
public class Bus implements Car{
public Bus (){
system.out.print("我的公共汽车");
}
}
//定义小汽车的实现
public class Car implements Car{
public Car(){
system.out.print("我的小汽车");
}
}
[/code]
//首先提供一个具体产品的标示性接口
public interface Car(){
}
[code="java"]
class CarFactory implements AbstractFactory{
public Car getFactory(){
return new CarFactory();
}
}
class BusFactory implements AbstractFactory{
public Car getFactory(){
return new BusFactory ();
}
}
//好了具体工厂方法调用
public class factoryTest(){
private static AbstractFactory carFactory ,busFactory ;
private Car smallCar,busCar;
public static void main(String[] args) {
//调用小汽车
carFactory =new CarFactory ();
smallCar=carFactory .getFactory();
//调用公共汽车
busFactory =new BusFactory ();
busCar=busFactory.getFactory();
}
}
[/code]
去了方法 接口还有什么意义 ?
接口用来抽象 你抽象了什么?
按你的想法 把Map里方法都去了吧
去了以后你知道这种类型的东西有什么特性?