设计模式(Java)—Abstract Factory模式

抽象工厂的工作是将“抽象零件”组装为“抽象产品”。 在Abstract Factory模式中将会出现抽象工厂,它将会抽象零件组装为抽象产品。也就是说人们并不关心零件的具体实现,而只关心接口,我们仅使用该接口将零件组装成为产品。 在Tempate Method模式和Builder模式中,子层这一层负责方法的具体实现,在Abstract Factory模式也是一样的。在子类这一层中有具体的工厂,它...
摘要由CSDN通过智能技术生成

抽象工厂的工作是将“抽象零件”组装为“抽象产品”。
在Abstract Factory模式中将会出现抽象工厂,它将会抽象零件组装为抽象产品。也就是说人们并不关心零件的具体实现,而只关心接口,我们仅使用该接口将零件组装成为产品。
在Tempate Method模式和Builder模式中,子层这一层负责方法的具体实现,在Abstract Factory模式也是一样的。在子类这一层中有具体的工厂,它负责将具体的零件组装成为具体的产品。

示例程序:将带有层次关系的链接集合制作成HTML文件。
这里写图片描述

这里写图片描述

抽象的零件类:Item类
Item类是Link类和Tray类的父类,这样Link类和Tray类就具有可替换性了,makeHTML方法是抽象方法。

package AbstractFactory;
//零件抽象类,构造函数,抽象方法
public abstract class Item {
    protected String caption;
    public Item(String caption) {
        // TODO Auto-generated constructor stub
        this.caption = caption;
    }
    public abstract String makeHTML();
}

抽象的零件:Link类,是抽象的表示HTML的超链接的类。
URL字段中保存的是超链接所指向的地址,Link类并没有实现父类中的抽象方法,所以它还是一个抽象类。

package AbstractFactory;

//零件的抽象类,初始化
public abstract class Link extends Item {
   
    protected String url;

    public Link(String caption,String url) {
        super(caption);
        // TODO Auto-generated constructor stub
        this.url = url;
    }
}

抽象的零件:Tray类,是表示一个含有多个Link类和Tray类的容器,使用add()方法把Link类和Tray类集合在一起。

package AbstractFactory;

import java.util.ArrayList;

//零件的抽象类,初始化
public abstract class Tray extends Item {
   
    protected ArrayList tray = new ArrayList();

    public Tray(String caption) {
        super(caption);
        // TODO Auto-generated constructor stub
    }

    public void add(Item item){
        tray.add(item);
    }

}

抽象的产品:Page类,抽象的表示HTML页面的类,如果将Link和Tray比喻成抽象的“零件”,那么Page类就是抽象的“产品”。

package AbstractFactory;

import java.io.FileWriter;
import java.io.Writer;
import j
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值