读书人

设计形式之抽象工厂模式(三)

发布时间: 2012-10-09 10:21:45 作者: rapoo

设计模式之抽象工厂模式(三)

interface Car{    public void run();    public void stop();}class Ford implements Car{    public void run(){        System.out.println("Ford run。。。");    }    public void stop(){        System.out.println("Ford stop。。。。");    }}class Toyota implements Car{    public void run(){        System.out.println("Toyota run。。。");    }    public void stop(){        System.out.println("Toyota stop。。。。");    }}interface Dog{public void run();public void sleep();}class BigDog implements Dog{public void run() {//bigdog run}public void sleep() {//bigdog sleep}}class SmallDog implements Dog{public void run() {//smalldog run}public void sleep() {//smalldog sleep} }interface factory{Car getCar();Dog getDog();}class FactoryA implements factory{public Car getCar() {return new Toyota();}public Dog getDog() {return new BigDog();}}class FactoryB implements factory{public Car getCar() {return new Ford();}public Dog getDog() {return new SmallDog();}}

看完工厂方法模式和抽象工厂模式,觉得都差不多了。。。。。


抽象工厂模式与工厂方法模式的区别
可以这么说,工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂方法模式的一种推广。
(1)、其实工厂方法模式是用来创建一个产品的等级结构的,而抽象工厂模式是用来创建多个产品的等级结构的。工厂方法创建一般只有一个方法,创建一种产品。抽象工厂一般有多个方法,创建一系列产品。
(2)、工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

简而言之->
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。

读书人网 >软件开发

热点推荐