/** * 工廠接口 */ public interface IFactory { AProduct1 createProduct1(); AProduct2 createProduct2(); } /** * 產品1 */ public abstract class AProduct1 { public abstract void produce(); } /** * 產品2 */ public abstract class AProduct2 { public abstract void produce(); } /** * 工廠實現 */ public class FactoryImpl implements IFactory { @Override public ProductImpl1 createProduct1() { return new ProductImpl1(); } @Override public ProductImpl2 createProduct2() { return new ProductImpl2(); } } /** * 產品1實現 */ public class ProductImpl1 extends AProduct1 { @Override public void produce() { System.out.println("產品1"); } } /** * 產品2實現 */ public class ProductImpl2 extends AProduct2 { @Override public void produce() { System.out.println("產品2"); } } /** * 測試與應用 */ public class Test { public static void main(String[] args) { FactoryImpl factory = new FactoryImpl(); ProductImpl1 productImpl1 = factory.createProduct1(); ProductImpl2 productImpl2 = factory.createProduct2(); productImpl1.produce(); productImpl2.produce(); } }
產品1 產品2
抽象工廠中的元素html
以家用電器爲例:java
簡介:慕課網的每一門課程都有手記和視頻等,課程又分Java課程,Python課程
//課程工廠 public interface ICourseFactory { Video getVideo(); Article getArticle(); }
//文章抽象類 public abstract class Article { public abstract void produce(); } //視頻抽象類 public abstract class Video { public abstract void produce(); }
//Java課程工廠 public class JavaCourseFactory implements ICourseFactory { @Override public JavaVideo getVideo() { return new JavaVideo(); } @Override public JavaArticle getArticle() { return new JavaArticle(); } } //Java視頻 public class JavaVideo extends Video { @Override public void produce() { System.out.println("錄製JAVA課程視頻"); } } //Java文章 public class JavaArticle extends Article { @Override public void produce() { System.out.println("編寫Java課程手記"); } }
//Python課程工廠 public class PythonCourseFactory implements ICourseFactory { @Override public Video getVideo() { return new PythonVideo(); } @Override public Article getArticle() { return new PythonArticle(); } } //Python視頻實現 public class PythonVideo extends Video { @Override public void produce() { System.out.println("錄製Python視頻"); } } //Python文章 public class PythonArticle extends Article { @Override public void produce() { System.out.println("編寫Python課程手記"); } }
public class Test { public static void main(String[] args) { //java 產品族 ICourseFactory courseFactory = new JavaCourseFactory(); Video video = courseFactory.getVideo(); Article article = courseFactory.getArticle(); video.produce(); article.produce(); } }
錄製JAVA課程視頻 編寫Java課程手記
java.sql.Connectiongit
java.sql.Statementgithub
慕課網設計模式精講
: https://coding.imooc.com/class/270.html 23種設計模式(3):抽象工廠模式
: https://blog.csdn.net/zhengzhb/article/details/7359385