三,工厂模式——抽象工厂模式

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了三,工厂模式——抽象工厂模式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1 抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具有1般性的1种形态。该模式面对的是多个产品等级结构的系统设计。工厂方法模式针对的是1个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。

1个产品等级结构图

三,工厂模式——抽象工厂模式

多个产品等级结构图

三,工厂模式——抽象工厂模式

1.2 产品族

产品族是指位于不同产品等级结构中,功能相干联的产品组成的家族。

三,工厂模式——抽象工厂模式


用相图的情势表现生产品族与产品等级结构的关系

三,工厂模式——抽象工厂模式

在抽象工厂模式中,每个产品族都有1个具体工厂,而每个具体工厂负责创建属于同1个产品族,但是分属于不同等级结构的产品。

1.3 抽象工厂触及到的角色

  • 抽象工厂角色
  • 具体工厂类角色
  • 抽象产品角色
  • 具体产品角色

2 甚么情况下使用抽象工厂模式

  • 1个系统中不应当依赖于产品类实例如何被创建,组合和表达的细节,这对所有形态的工厂模式都是重要的。
  • 这个系统的产品有多于1个的产品族,而系统只消费其中某1族的产品。
  • 同属于同1个产品族的产品是在1起使用的。
  • 系统提供1个产品类的库,所有的产品以一样的接口出现,从而使客户端不依赖于实现。

3 抽象工厂的实现

农场公司要引进塑料大棚的技,在大棚里种植热带和亚热带的水果和蔬菜。在这里水果和蔬菜就是两个等级结构,而热带的水果和热带的蔬菜是1个产品族,亚热带的水果和亚热带的蔬菜又是1个产品族。

用类图表示为

三,工厂模式——抽象工厂模式

部份代码实现

package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public interface FruITs {
    String getName();
    void setName(String name);
}
package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public interface Vegetables {
    String getName();
    void setName(String name);
}
package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public class SuBTropicalFruit implements Fruits{
    PRivate String name;

    SubtropicalFruit(String name){
        this.name = name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public class SubtropicalVegetable implements Vegetables{
    private String name;

    SubtropicalVegetable(String name){
        this.name = name;
    }

    @override
    public String getName() {
        return null;
    }

    @Override
    public void setName(String name) {
        this.name = name;
    }
}
package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public class SubtropicalFactory implements IFatory{
    public static Fruits createFruit(String name){
        return new SubtropicalFruit(name);
    }

    public static Vegetables createVegetable(String name){
        return new SubtropicalVegetable(name);
    }
}
package com.designpattern.abstractfactory;

/**
 * Created by Administrator on 2016/9/19.
 */
public class Client {
    public static void main(String args[]){
        Fruits fruit = SubtropicalFactory.createFruit("香蕉");

        System.out.println(fruit.getName());
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的三,工厂模式——抽象工厂模式全部内容,希望文章能够帮你解决三,工厂模式——抽象工厂模式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: