定义:提供一个创建一系列相关或相互依赖的接口
优点:将一个系列的产品统一到一起创建,节省代码量
缺点:规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口
直接上代码:
Factory类:
package AbstractFactory;
public interface CourseFactory {
public Video getVideo();
public Article getArticle();
}
package AbstractFactory;
public class JavaFactory implements CourseFactory {
@Override
public Video getVideo() {
// TODO Auto-generated method stub
return new JavaVideo();
}
@Override
public Article getArticle() {
// TODO Auto-generated method stub
return new JavaArticle();
}
}
package AbstractFactory;
public class PythonFactory implements CourseFactory {
public Video getVideo() {
return new PythonVideo();
};
public Article getArticle() {
return new PythonArticle();
};
}
Video和Article接口:
package AbstractFactory;
public interface Video {
public void produce();
}
package AbstractFactory;
public interface Article {
public void produce();
}
具体实现:
package AbstractFactory;
public class JavaArticle implements Article {
@Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("Java教程");
}
}
package AbstractFactory;
public class JavaVideo implements Video {
@Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("Java视频教学");
}
}
package AbstractFactory;
public class PythonArticle implements Article {
public void produce() {
System.out.println("Python教案");
}
}
package AbstractFactory;
public class PythonVideo implements Video {
@Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("Python视频教学");
}
}