-
* @author ThinkPad
-
*
-
*/
-
public abstract class IceCreamFactory {
-
/**
-
* 抽象的生产冰淇淋方法
-
* @return
-
*/
-
protected abstract IceCream produceIceCream();
-
}
package com.factorymethod.test;
/**
-
抽象冰淇淋工厂类
-
@author ThinkPad
*/
public abstract class IceCreamFactory {
/**
-
抽象的生产冰淇淋方法
-
@return
*/
protected abstract IceCream produceIceCream();
}
3、苹果口味的冰淇淋工厂 AppleIceCreamFactory.java
[java] view plain copy
-
package com.factorymethod.test;
-
/**
-
* 苹果口味的冰淇淋工厂
-
* @author ThinkPad
-
*
-
*/
-
public class AppleIceCreamFactory extends IceCreamFactory {
-
@Override
-
protected IceCream produceIceCream() {
-
// TODO 自动生成的方法存根
-
return new AppleIceCream();
-
}
-
}
package com.factorymethod.test;
/**
-
苹果口味的冰淇淋工厂
-
@author ThinkPad
*/
public class AppleIceCreamFactory extends IceCreamFactory {
@Override
protected IceCream produceIceCream() {
// TODO 自动生成的方法存根
return new AppleIceCream();
}
}
**
4、香蕉口味的冰淇淋工厂 BananaIceCreamFactory.java**
[java] view plain copy
-
package com.factorymethod.test;
-
/**
-
* 香蕉口味的冰淇淋工厂
-
* @author ThinkPad
-
*
-
*/
-
public class BananaIceCreamFactory extends IceCreamFactory {
-
@Override
-
protected IceCream produceIceCream() {
-
// TODO 自动生成的方法存根
-
return new BananaIceCream();
-
}
-
}
package com.factorymethod.test;
/**
-
香蕉口味的冰淇淋工厂
-
@author ThinkPad
*/
public class BananaIceCreamFactory extends IceCreamFactory {
@Override
protected IceCream produceIceCream() {
// TODO 自动生成的方法存根
return new BananaIceCream();
}
}
5、草莓口味的冰淇淋工厂 StrawberryIceCreamFactory.java
[java] view plain copy
-
package com.factorymethod.test;
-
/**
-
* 草莓口味的冰淇淋工厂
-
* @author ThinkPad
-
*
-
*/
-
public class StrawberryIceCreamFactory extends IceCreamFactory {
-
@Override
-
protected IceCream produceIceCream() {
-
// TODO 自动生成的方法存根
-
return new StrawberryIceCream();
-
}
-
}
package com.factorymethod.test;
/**
-
草莓口味的冰淇淋工厂
-
@author ThinkPad
*/
public class StrawberryIceCreamFactory extends IceCreamFactory {
@Override
protected IceCream produceIceCream() {
// TODO 自动生成的方法存根
return new StrawberryIceCream();
}
}
6、客户端示例
[java] view plain copy
-
package com.factorymethod.test;
-
/**
-
* 客户端示例
-
* @author ThinkPad
-
*
-
*/
-
public class Console {
-
public static void main(String[] args) {
-
// TODO 自动生成的方法存根
-
// 要草莓味的冰淇淋
-
IceCream c1 = new StrawberryIceCreamFactory().produceIceCream();
-
c1.taste();
-
// 要香蕉味的冰淇淋
-
IceCream c2 = new BananaIceCreamFactory().produceIceCream();
-
c2.taste();
-
}
-
}
package com.factorymethod.test;
/**
-
客户端示例
-
@author ThinkPad
*/
public class Console {
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 要草莓味的冰淇淋
IceCream c1 = new StrawberryIceCreamFactory().produceIceCream();
c1.taste();
// 要香蕉味的冰淇淋
IceCream c2 = new BananaIceCreamFactory().produceIceCream();
c2.taste();
}
}
那么,你应该猜到了,这就是个工厂方法模式的实例喽!该例的UML图如下:
=======================================================================================
冰淇淋的生意越来越好了,商城又在原料上动起了心思。在很多人的观念中,进口的东西总是要比国产的好(插一句,很多洋品牌在华销售的质量啊、卫生等标准要比国际标准低的多,因为中国的标准要求本来就低,而且中国人心理承受能力强、好骗~)。商城原先的冰淇淋原料都是国产的,现在它决定把一部分产品的奶油用进口的奶油取代,进口奶油制作的冰淇淋价格稍高一些,顾客可以自行选择。
那么,商城应该怎样做呢?它当然可以再为每种口味的冰淇淋造一套相应的机器(用进口奶油来生产的机器,我们假设原先的机器是用国产奶油来生产的),也就是说仍然使用上面的“工厂方法模式”。可是,这样一来,商城就要新造原来一倍的机器(工厂类)了。倘若,商城是从原来的那一套切换到现在的生产国产、进口奶油冰淇淋的这一套,那么倒也没什么。毕竟,它只需要再加一些机器即可,不用做其它的改造。
倘若,商城一开始就规划了生产国产、进口奶油的冰淇淋呢?也就是说,它现在是第一次设计它的冰淇淋生产系统。那么,下面这样做也许更好:
1、国产奶油冰淇淋接口 DomesticIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 国产奶油冰淇淋接口
-
* @author ThinkPad
-
*
-
*/
-
public interface DomesticIceCream {
-
/**
-
* taste 方法 表明是哪种口味
-
*/
-
public void taste();
-
}
package com.abstractfactory.test;
/**
-
国产奶油冰淇淋接口
-
@author ThinkPad
*/
public interface DomesticIceCream {
/**
- taste 方法 表明是哪种口味
*/
public void taste();
}
2、进口奶油冰淇淋接口 ImportedIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 进口奶油冰淇淋接口
-
* @author ThinkPad
-
*
-
*/
-
public interface ImportedIceCream {
-
/**
-
* taste 方法 表明是哪种口味
-
*/
-
public void taste();
-
}
package com.abstractfactory.test;
/**
-
进口奶油冰淇淋接口
-
@author ThinkPad
*/
public interface ImportedIceCream {
/**
- taste 方法 表明是哪种口味
*/
public void taste();
}
3、苹果口味的冰淇淋(国产奶油) AppleDomesticIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 苹果口味的冰淇淋(国产奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class AppleDomesticIceCream implements DomesticIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”苹果口味的冰淇淋(国产奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
苹果口味的冰淇淋(国产奶油)
-
@author ThinkPad
*/
public class AppleDomesticIceCream implements DomesticIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“苹果口味的冰淇淋(国产奶油)”);
}
}
**
4、苹果口味的冰淇淋(进口奶油) AppleImportedIceCream.java**
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 苹果口味的冰淇淋(进口奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class AppleImportedIceCream implements ImportedIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”苹果口味的冰淇淋(进口奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
苹果口味的冰淇淋(进口奶油)
-
@author ThinkPad
*/
public class AppleImportedIceCream implements ImportedIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“苹果口味的冰淇淋(进口奶油)”);
}
}
5、香蕉口味的冰淇淋(国产奶油) BananaDomesticIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 香蕉口味的冰淇淋(国产奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class BananaDomesticIceCream implements DomesticIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”香蕉口味的冰淇淋(国产奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
香蕉口味的冰淇淋(国产奶油)
-
@author ThinkPad
*/
public class BananaDomesticIceCream implements DomesticIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“香蕉口味的冰淇淋(国产奶油)”);
}
}
6、香蕉口味的冰淇淋(进口奶油) BananaImportedIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 香蕉口味的冰淇淋(进口奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class BananaImportedIceCream implements ImportedIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”香蕉口味的冰淇淋(进口奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
香蕉口味的冰淇淋(进口奶油)
-
@author ThinkPad
*/
public class BananaImportedIceCream implements ImportedIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“香蕉口味的冰淇淋(进口奶油)”);
}
}
7、草莓口味的冰淇淋(国产奶油) StrawberryDomesticIceCream.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 草莓口味的冰淇淋(国产奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class StrawberryDomesticIceCream implements DomesticIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”草莓口味的冰淇淋(国产奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
草莓口味的冰淇淋(国产奶油)
-
@author ThinkPad
*/
public class StrawberryDomesticIceCream implements DomesticIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“草莓口味的冰淇淋(国产奶油)”);
}
}
**
8、草莓口味的冰淇淋(进口奶油) StrawberryImportedIceCream.java**
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 草莓口味的冰淇淋(进口奶油)
-
* @author ThinkPad
-
*
-
*/
-
public class StrawberryImportedIceCream implements ImportedIceCream {
-
@Override
-
public void taste() {
-
// TODO 自动生成的方法存根
-
System.out.println(”草莓口味的冰淇淋(进口奶油)”);
-
}
-
}
package com.abstractfactory.test;
/**
-
草莓口味的冰淇淋(进口奶油)
-
@author ThinkPad
*/
public class StrawberryImportedIceCream implements ImportedIceCream {
@Override
public void taste() {
// TODO 自动生成的方法存根
System.out.println(“草莓口味的冰淇淋(进口奶油)”);
}
}
9、抽象的冰淇淋工厂类 IceCreamFactory.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 抽象的冰淇淋工厂类
-
* @author ThinkPad
-
*
-
*/
-
public abstract class IceCreamFactory {
-
/**
-
* 生产国产奶油冰淇淋
-
*/
-
public abstract DomesticIceCream produceDomesticIceCream();
-
/**
-
* 生产进口奶油冰淇淋
-
*/
-
public abstract ImportedIceCream produceImportedIceCream();
-
}
package com.abstractfactory.test;
/**
-
抽象的冰淇淋工厂类
-
@author ThinkPad
*/
public abstract class IceCreamFactory {
/**
- 生产国产奶油冰淇淋
*/
public abstract DomesticIceCream produceDomesticIceCream();
/**
- 生产进口奶油冰淇淋
*/
public abstract ImportedIceCream produceImportedIceCream();
}
10、苹果味冰淇淋工厂类 AppleIceCreamFactory.java
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 苹果味冰淇淋工厂类
-
* @author ThinkPad
-
*
-
*/
-
public class AppleIceCreamFactory extends IceCreamFactory {
-
@Override
-
public DomesticIceCream produceDomesticIceCream() {
-
// TODO 自动生成的方法存根
-
return new AppleDomesticIceCream();
-
}
-
@Override
-
public ImportedIceCream produceImportedIceCream() {
-
// TODO 自动生成的方法存根
-
return new AppleImportedIceCream();
-
}
-
}
package com.abstractfactory.test;
/**
-
苹果味冰淇淋工厂类
-
@author ThinkPad
*/
public class AppleIceCreamFactory extends IceCreamFactory {
@Override
public DomesticIceCream produceDomesticIceCream() {
// TODO 自动生成的方法存根
return new AppleDomesticIceCream();
}
@Override
public ImportedIceCream produceImportedIceCream() {
// TODO 自动生成的方法存根
return new AppleImportedIceCream();
}
}
**
11、香蕉冰淇淋工厂类 BananaIceCreamFactory.java**
[java] view plain copy
-
package com.abstractfactory.test;
-
/**
-
* 香蕉冰淇淋工厂类
-
* @author ThinkPad
-
*
-
*/
-
public class BananaIceCreamFactory extends IceCreamFactory {
-
@Override
-
public DomesticIceCream produceDomesticIceCream() {
-
// TODO 自动生成的方法存根
-
return new BananaDomesticIceCream();
-
}
-
@Override
-
public ImportedIceCream produceImportedIceCream() {
-
// TODO 自动生成的方法存根
-
return new BananaImportedIceCream();
-
}
-
}
package com.abstractfactory.test;
/**
-
香蕉冰淇淋工厂类
-
@author ThinkPad
*/
public class BananaIceCreamFactory extends IceCreamFactory {
@Override
public DomesticIceCream produceDomesticIceCream() {
// TODO 自动生成的方法存根
return new BananaDomesticIceCream();
}
@Override
public ImportedIceCream produceImportedIceCream() {
// TODO 自动生成的方法存根
return new BananaImportedIceCream();
}
}
**
12、草莓冰淇淋工厂类 StrawberryIceCreamFactory.java**
[java] view plain copy
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
- Kafka的集群
- 第一个Kafka程序
afka的生产者
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
- Kafka实战之削峰填谷
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-yewbtqS7-1711628530381)]
[外链图片转存中…(img-uTZVlFzX-1711628530382)]
[外链图片转存中…(img-KlfMj9OD-1711628530383)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
Kafka实战笔记
关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图
[外链图片转存中…(img-6oPxa6vi-1711628530383)]
- Kafka入门
- 为什么选择Kafka
- Karka的安装、管理和配置
[外链图片转存中…(img-kmY1p6xg-1711628530383)]
- Kafka的集群
- 第一个Kafka程序
- [外链图片转存中…(img-hdvk0xQc-1711628530383)]
afka的生产者
[外链图片转存中…(img-Ic3loGlf-1711628530384)]
- Kafka的消费者
- 深入理解Kafka
- 可靠的数据传递
[外链图片转存中…(img-BQRrz39C-1711628530384)]
[外链图片转存中…(img-7cduGQ7v-1711628530384)]
- Spring和Kalka的整合
- Sprinboot和Kafka的整合
- Kafka实战之削峰填谷
- 数据管道和流式处理(了解即可)
[外链图片转存中…(img-Df8Samzz-1711628530384)]
- Kafka实战之削峰填谷
[外链图片转存中…(img-ZUxPdumm-1711628530385)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!