关于抽象工厂模式

interface NokiaPhone{    // 定义Nokia手机接口
    void description();
}
interface NokiaBattery{        //定义Nokia电池接口
    void description();
}
interface NokiaFactory{        //定义生产Nokia系列产品的接口,包括手机、电池、充电器等。
    NokiaPhone createNokiaPhone();    //抽象方法,返回一款Nokia手机
    NokiaBattery createNokiaBattery(); //抽象方法,返回一个Nokia电池
}
class N97Phone implements NokiaPhone{    //N97型号手机实现手机接口
    public void description(){
        System.out.println("这是一款N97手机");
    }
}
class N5230Phone implements NokiaPhone{    //5230型号手机实现手机接口
    public void description(){
        System.out.println("这是一款5230手机");
    }
}
class N97Battery implements NokiaBattery{    //N97手机电池实现电池接口
    public void description(){
        System.out.println("这是一个N97手机专用电池");
    }
}
class N5230Battery implements NokiaBattery{    //5230手机电池实现电池接口
    public void description(){
        System.out.println("这是一个5230手机专用电池");
    }
}
class N97Factory implements NokiaFactory{    //N97工厂实现Nokia工厂
    public NokiaPhone createNokiaPhone(){    //返回一款N97手机对象
        return new N97Phone();
    }
    public NokiaBattery createNokiaBattery(){ //返回一块N97手机电池对象
        return new N97Battery();
    }
}
class N5230Factory implements NokiaFactory{    //5230工厂实现Nokia工厂
    public NokiaPhone createNokiaPhone(){   //返回一款5230手机对象
        return new N5230Phone();            
    }
    public NokiaBattery createNokiaBattery(){ //返回一块5230手机电池对象
        return new N5230Battery();
    }
}
public class AbstractFactoryDemo{
    public static void main(String args[]){
        NokiaFactory factory=new N97Factory();
        NokiaPhone np=factory.createNokiaPhone();
        NokiaBattery nb=factory.createNokiaBattery();
        np.description();
        nb.description();
    }
}

程序输出结果为:这是一款N97手机

        这是一块N97手机专用电池

总结:

多个抽象产品类(本例中为NokiaPhone和NokiaBattery接口),每个抽象产品类可以派生出多个具体产品类(本例中为N97Phone、N5230Phone、N97Battery、N5230Battery类)。 一个抽象工厂类(本例中为NokiaFactory接口),可以派生出多个具体工厂类(本例中为NokiaPhoneFactory、NokiaBatteryFactory)。 每个具体工厂类可以创建多个具体产品类的实例。

posted on 2012-10-14 19:54  百零八1900  阅读(219)  评论(0)    收藏  举报

导航