AbstractFactory 抽象工厂模式
AbstractFactory 抽象工厂模式
今天估计没时间详细介绍AbstractFactory 抽象工厂模式,就先直接贴出一个示例代码,然后再慢慢介绍。
我google了一下其他介绍抽象工厂的文章,基本上都是用C#实现的,奇怪的现象,难道java都不怎么需要抽象工厂么?
为了跟别人的有所区别,我这里直接就用接口来实现抽象工厂了,毕竟接口也是一个抽象类么。我想尝试用不一样的角度来介绍抽象工厂。
以下先贴代码,还是沿用了机器人的例子,除了实现Speak打招呼功能,还额外实现了Clean打扫功能:
功能模块接口Speaker:
Java代码
- package com.iteye.bolide74.impl;
- public interface ISpeaker {
- public void Speak(String msg);
- }
复制代码功能模块接口Cleaner:
Java代码
- package com.iteye.bolide74.impl;
- public interface ICleaner {
- public void Clean();
- }
复制代码工作者(或许机器人或许是人类)的生成工厂接口:
Java代码
- package com.iteye.bolide74.impl;
- public interface IWorkerFactory {
- public ICleaner getCleaner();
- public ISpeaker getSpeaker();
- }
复制代码机器人A的生成工厂,实现或者说继承了“工作者”生成工厂类
Java代码
- package com.iteye.bolide74.action;
- import com.iteye.bolide74.impl.ICleaner;
- import com.iteye.bolide74.impl.ISpeaker;
- import com.iteye.bolide74.impl.IWorkerFactory;
- public class RobotAFactory implements IWorkerFactory {
- @Override
- public ICleaner getCleaner() {
- return new RobotCleaner();
- }
- @Override
- public ISpeaker getSpeaker() {
- return new RobotSpeaker();
- }
- }
复制代码实现类,或者说是应用代码:
Java代码
- package com.iteye.bolide74.tester;
- import com.iteye.bolide74.action.RobotAFactory;
- import com.iteye.bolide74.impl.ICleaner;
- import com.iteye.bolide74.impl.ISpeaker;
- import com.iteye.bolide74.impl.IWorkerFactory;
- public class Tester {
- public static void main(String[] args) {
- IWorkerFactory workFactory=new RobotAFactory();
- ICleaner cleaner=workFactory.getCleaner();
- ISpeaker speaker=workFactory.getSpeaker();
- cleaner.Clean();
- speaker.Speak("hello,world!");
- }
- }
复制代码以上,抽空再充实一下这篇博文,请下回再来,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论