抽象工厂设计模式

什么是产品族

在这里插入图片描述

什么是同一级别

在这里插入图片描述

概述

抽象工厂模式用于1对多场景,一个具体工厂对应多个具体产品

优点

当一个产品族的产品设计在一起工作时,能够保证始终只用一个产品族的产品

缺点

当一个产品族新增一个产品的时候,所有的工厂都得修改

使用场景

比如搜狗输入法,我们在切换搜狗输入法的皮肤时,输入法上面的图标也会进行切换,一换就是换一整套(一整套全换是抽象工厂的本意)

思维导图

在这里插入图片描述

代码

public interface Coffee {
    String getName();
}
public interface Cake {
    String getName();
}
public interface AbstarctFactory {
    Cake createCake();
    Coffee createCoffee();
}
public class ChinaCake implements Cake {
    public String getName() {
        return "中国蛋糕";
    }
}
public class ChinaCoffee implements Coffee {

    public String getName() {
        return "中国咖啡";
    }
}
public class ChinaFactory implements AbstarctFactory {
    public Cake createCake() {
        return new ChinaCake();
    }

    public Coffee createCoffee() {
        return new ChinaCoffee();
    }
}
public class RussiaCake implements Cake {
    public String getName() {
        return "俄罗斯蛋糕";
    }
}
public class RussiaCoffee implements Coffee {

    public String getName() {
        return "俄罗斯咖啡";
    }
}
public class RussiaFactory implements AbstarctFactory {
    public Cake createCake() {
        return new RussiaCake();
    }

    public Coffee createCoffee() {
        return new RussiaCoffee();
    }
}
/**
 * 咖啡店
 * @author pk 
 */
public class CoffeeStore {
    private AbstarctFactory abstarctFactory;

    public void setCoffeeFactory(AbstarctFactory abstarctFactory) {
        this.abstarctFactory = abstarctFactory;
    }

    public void orderCoffee(){
        Coffee coffee = abstarctFactory.createCoffee();
        System.out.println(coffee.getName());
    }

    public void orderCake(){
        Cake cake = abstarctFactory.createCake();
        System.out.println(cake.getName());
    }
}
public class Test {
    public static void main(String[] args) {
        CoffeeStore coffeeStore = new CoffeeStore();
        AbstarctFactory coffeeFactory = new RussiaFactory();
        coffeeStore.setCoffeeFactory(coffeeFactory);
        coffeeStore.orderCoffee();
        coffeeStore.orderCake();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值