Java设计模式之“抽象工厂模式“

来源:互联网 发布:考勤机已删除数据恢复 编辑:程序博客网 时间:2024/06/05 10:17

抽象工厂模式

  • 与工厂方法不同的是,当产品结构较为复杂,有多级产品结构,和多个同级分类的产品的时候,可以通过抽象工厂的方式去解决。
  • 所谓抽象工厂,是指将产品抽象,通过工厂去生产产品。
  • 一般而言,工厂的结构应该与产品的结构相同,这样才能一一对应。让对应的工厂去生产对应的产品。
  • 假设现在有一个二级的产品结构,每个结构都有两种不同种类的产品,那么代码可以是这样:
    • 1.产品抽象类
package com.pythoncat.abstructfactory.product;/** * Created by pythonCat on 16-3-26. */public interface Product {}
* 2.一级产品结构类
package com.pythoncat.abstructfactory.product;/** * Created by pythonCat on 16-3-26. */public interface ProductA extends Product {    void doSomething();}----------------------------------package com.pythoncat.abstructfactory.product;/** * Created by pythonCat on 16-3-26. */public interface ProductB extends Product {    void doSomething();}
  • 3.具体的产品类
package com.pythoncat.abstructfactory.product.impl;import com.pythoncat.abstructfactory.product.ProductA;/** * Created by pythonCat on 16-3-26. */public class ProductA1 implements ProductA {    public ProductA1() {    }    public void doSomething() {    }}-----------------------package com.pythoncat.abstructfactory.product.impl;import com.pythoncat.abstructfactory.product.ProductA;/** * Created by pythonCat on 16-3-26. */public class ProductA2 implements ProductA {    public ProductA2() {    }    public void doSomething() {    }}=============================package com.pythoncat.abstructfactory.product.impl;import com.pythoncat.abstructfactory.product.ProductB;/** * Created by pythonCat on 16-3-26. */public class ProductB1 implements ProductB {    public ProductB1() {    }    public void doSomething() {    }}-------------------package com.pythoncat.abstructfactory.product.impl;import com.pythoncat.abstructfactory.product.ProductB;/** * Created by pythonCat on 16-3-26. */public class ProductB2 implements ProductB {    public ProductB2() {    }    public void doSomething() {    }}
  • 产品结构展示完成,然后是建立相同结构的工厂
  • 1.抽象工厂类
package com.pythoncat.abstructfactory.factory;/** * Created by pythonCat on 16-3-26. */public interface Createor {}
  • 2.对应具体产品结构的工厂
package com.pythoncat.abstructfactory.factory.impl;import com.pythoncat.abstructfactory.factory.Createor;import com.pythoncat.abstructfactory.product.ProductA;import com.pythoncat.abstructfactory.product.ProductB;import com.pythoncat.abstructfactory.product.impl.ProductA1;import com.pythoncat.abstructfactory.product.impl.ProductB1;/** * Created by pythonCat on 16-3-26. */public class ConCreateor1 implements Createor {    public ProductA fracoryA() {        return new ProductA1();    }    public ProductB fracoryB() { return new ProductB1(); }}-----------------package com.pythoncat.abstructfactory.factory.impl;import com.pythoncat.abstructfactory.factory.Createor;import com.pythoncat.abstructfactory.product.ProductA;import com.pythoncat.abstructfactory.product.ProductB;import com.pythoncat.abstructfactory.product.impl.ProductA1;import com.pythoncat.abstructfactory.product.impl.ProductA2;import com.pythoncat.abstructfactory.product.impl.ProductB1;import com.pythoncat.abstructfactory.product.impl.ProductB2;/** * Created by pythonCat on 16-3-26. */public class ConCreateor2 implements Createor {    public ProductA fracoryA() {        return new ProductA2();    }    public ProductB fracoryB() { return new ProductB2(); }}

  • 以上,就是抽象工厂的学习内容。
  • 参考: 《Java与模式》 闫宏 著
0 0