这是抽象工厂么?

    
choumao
07-01-19 3 320


abstract class Factory {

public abstract VideoMpeg createVideoMpeg();
public abstract VideoRm createVideoRm();
public abstract AudioMp3 createAudioMp3();
public abstract AudioWav createAudioWav();
}

class ProduceFactory extends Factory {

public VideoMpeg createVideoMpeg() {
return new VideoMpeg();
}

public VideoRm createVideoRm() {
return new VideoRm();
}

public AudioMp3 createAudioMp3() {
return new AudioMp3();
}

public AudioWav createAudioWav() {
return new AudioWav();
}

}

class AudioMp3 {

public AudioMp3() {
// TODO: 在此处添加构造函数逻辑
}

public void play() {
System.out.println(
"this is mp3 play...");
}
}

class AudioWav {

public AudioWav() {
// TODO: 在此处添加构造函数逻辑
}

public void play() {
System.out.println(
"this is wav play...");
}
}

class VideoRm {

public VideoRm() {
// TODO: 在此处添加构造函数逻辑
}

public void play() {
System.out.println(
"this is rm play...");
}
}

class VideoMpeg {

public VideoMpeg() {
// TODO: 在此处添加构造函数逻辑
}

public void play() {
System.out.println(
"this is mpeg play...");
}
}

public class AbstractFactory {

public static void main(String[] args) {

Factory _factory = new ProduceFactory();

AudioMp3 _mp3 = _factory.createAudioMp3();
VideoRm _rm = _factory.createVideoRm();

_mp3.play();
_rm.play();
}
}


看了抽象工厂的概念,写了一段代码,不知道写对了没有。请赐教谢谢 :)

choumao
2007-01-20 18:17

哪位高手帮看看呗。自己顶一下。别沉了

choumao
2007-01-22 09:51

帖子都贴了好几天了,怎么没人解释一下啊。

banq
2007-01-22 15:11

差不多是了

如果将
VideoMpeg和 VideoRm 抽象为Video接口。
将AudioMp3 AudioWav抽象为Audio接口

则更标准

你的Factory实现非常简单。

其实简单工厂和抽象工厂没有必要刻意区分,简单的工厂方法复杂了,自然就可能会成为抽象工厂,抽象工厂一般产品抽象有多个,相应的工厂实现也会有多个。