抽象工厂模式

先让我们看看工厂方法模式的缺点

工厂方法模式是对于每个产品类进行设计的 ,如果我有很多个产品类的话就会出一些问题,我们发现工厂类就会变得多起来.

现在看看抽象工厂方法模式

举例,现在我有两种房子,一种是House,一种是Condo,然后不管什么类型的房子又分medium(中等)和super(高等)

 

 代码:

//House类
public interface House {
    public String getHouseInfo();
}

pubic class SuperHouse implements House {
    public String getHouseInfo() {
        return "superHouse.html"l
    }
}

pubic class MediumHouse implements House {
    public String getHouseInfo() {
        return "MediumHouse.html"l
    }
}


//Condo类
public interface Condo {
    public String getCondoInfo();
}

public class SuperCondo implements Condo {
    public String getCondoInfo(){
        return "superCondo.html";
    }    
}

public class MediumCondo implements Condo {
    public String getCondoInfo(){
        return "MediumCondo.html";
    }    
}

//抽象工厂类
public abstract class BuildingFactory {
    public static final String SUPER = "Super Class";
    public static final String MEDIUM = "Medium Class";
    public abstract House getHouse();
    public abstract Condo getCondo();

    public static BuildingFactory getBuildingFactory(String type) {
        BuildingFactory bf = null;

        if (type.equals(BuildingFactory.SUPER)) {
            bf = new SuperBuildingFactory();
        }else if (type.equals(BuildingFactory.MEDIUM)) {
            bf = new MediumBuildingFactory();
        }
        
        return bf;
    }
}

public class MediumBuildingFactory extends BuildingFactory {
    public House getHouse() {
        return new MediumHouse();
    }    

    public Condo getCondo() {
        return new MediumCondo();   
    }
}

public class SuperBuildingFactory extends BuildingFactory {
    public House getHouse() {
        return new SuperHouse();
    }    

    public Condo getCondo() {
        return new SuperCondo();   
    }
}

使用示例:

何时使用抽象工厂模式:

         当客户想要创建某个子类对象,而不想知道到底哪个类被创建了,等到我要使用的时候再决定创建哪个子类.

有关可扩展性:

        只有一种情况下是可扩展性,就是增加了 一个子类,但是这个子类还是沿用抽象工厂类里的已有的方法,而不用加新的方法

再看看不满足的:

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值