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

抽象工厂模式

  • 与工厂方法不同的是,当产品结构较为复杂,有多级产品结构,和多个同级分类的产品的时候,可以通过抽象工厂的方式去解决。
  • 所谓抽象工厂,是指将产品抽象,通过工厂去生产产品。
  • 一般而言,工厂的结构应该与产品的结构相同,这样才能一一对应。让对应的工厂去生产对应的产品。
  • 假设现在有一个二级的产品结构,每个结构都有两种不同种类的产品,那么代码可以是这样:
    • 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与模式》 闫宏 著
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值