abstract void printPrice();

}


public abstract class CarbonatedDink  extends Drink {

    /**所有该类饮料共有的属性*/

    public void commonProperty() {

        System.out.println("碳酸饮料中都含有二氧化碳");

    }

}

public abstract class JuiceDink  extends Drink {

    /**所有该类饮料共有的属性*/

    public void commonProperty() {

        System.out.println("果汁饮料中都含有果汁浓缩汁");

    }

}

public abstract class CoolTeaDrink extends Drink {

    /**所有该类饮料共有的属性*/

    public void commonProperty() {

        System.out.println("凉茶饮料中都含有中草药成分");

    }

}

public class CocaCola extends CarbonatedDink {

@Override

void printName() {

    System.out.println("可口可乐");

}

@Override

void printPrice() {

    System.out.println("2.5元");

}

}

public class Sprite extends CarbonatedDink {

@Override

void printName() {

    System.out.println("雪碧");

}

@Override

void printPrice() {

    System.out.println("2.5元");

}

}


public class HuiYuanGuozhi extends JuiceDink {

    @Override

    void printName() {

        System.out.println("汇源果汁");

    }

    @Override

    void printPrice() {

        System.out.println("2.0元");

    }

}

public class GuoLiCheng extends JuiceDink {

    @Override

    void printName() {

        System.out.println("果粒橙");

    }

    @Override

    void printPrice() {

        System.out.println("3.5元");

    }

}

public class JiaDuoBao extends CoolTeaDrink {

@Override

void printName() {

    System.out.println("加多宝凉茶");

}

@Override

void printPrice() {

    System.out.println("3.5元");

}

}

public class WangLaoji extends CoolTeaDrink {

@Override

void printName() {

    System.out.println("王老吉凉茶");

}

@Override

void printPrice() {

    System.out.println("3.5元");

}

}


/**

 * 生产饮料的抽象工厂

 */

public interface DrinkFactory {

    /**创建碳酸饮料*/

    CarbonatedDink createCarbonatedDink();

    /**创建果汁饮料*/

    JuiceDink createJuiceDink();

    /**创建凉茶饮料*/

    CoolTeaDrink createCoolTeaDrink();

}

public class DrinkFactory1 implements DrinkFactory {

@Override

public CarbonatedDink createCarbonatedDink() {

    return new CocaCola();

}

@Override

public JuiceDink createJuiceDink() {

    return new HuiYuanGuozhi();

}

@Override

public CoolTeaDrink createCoolTeaDrink() {

    return new JiaDuoBao();

}

}

public class DrinkFactory2 implements DrinkFactory {

@Override

public CarbonatedDink createCarbonatedDink() {

    return new Sprite();

}

@Override

public JuiceDink createJuiceDink() {

    return new GuoLiCheng();

}

@Override

public CoolTeaDrink createCoolTeaDrink() {

    return new WangLaoji();

}

}



public class Client {

    public static void main(String[] args) {

        //创建两个饮料工厂

        DrinkFactory drinkFactory1 = new DrinkFactory1();

        DrinkFactory drinkFactory2 = new DrinkFactory2();

        System.out.println("drinkFactory1开始生产饮料>>>>>>>>>>>>");

        //drinkFactory1创建一组饮料产品

        CarbonatedDink cocaCola = drinkFactory1.createCarbonatedDink();

        JuiceDink huiYuanGuozhi = drinkFactory1.createJuiceDink();

        CoolTeaDrink jiaDuoBao = drinkFactory1.createCoolTeaDrink();

        cocaCola.printName();

        cocaCola.printPrice();

        huiYuanGuozhi.printName();

        huiYuanGuozhi.printPrice();

        jiaDuoBao.printName();

        jiaDuoBao.printPrice();

        System.out.println("");

        System.out.println("drinkFactory2开始生产饮料>>>>>>>>>>>>");

        //drinkFactory2创建一组饮料产品

        CarbonatedDink sprite = drinkFactory2.createCarbonatedDink();

## 学习福利

**【Android 详细知识点思维脑图(技能树)】**

> ![](https://s2.51cto.com/images/20210918/1631911714769254.jpg)

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,**现在高级工程师还是比较缺少的**,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

> 这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

![](https://s2.51cto.com/images/20210918/1631911714903787.jpg)

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://ali1024.coding.net/public/P7/Android/git)**

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。