这是抽象工厂么? 2007-01-19 choumao 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(); }} 看了抽象工厂的概念,写了一段代码,不知道写对了没有。请赐教谢谢 :)
banq 2007-01-22 15:11 差不多是了 如果将VideoMpeg和 VideoRm 抽象为Video接口。将AudioMp3 AudioWav抽象为Audio接口 则更标准 你的Factory实现非常简单。 其实简单工厂和抽象工厂没有必要刻意区分,简单的工厂方法复杂了,自然就可能会成为抽象工厂,抽象工厂一般产品抽象有多个,相应的工厂实现也会有多个。