Java设计模式(一)——抽象工厂模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java设计模式(一)——抽象工厂模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3335字,纯文字阅读大概需要5分钟。
内容图文
1.抽象工厂模式介绍
抽象工厂模式定义:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。是工厂方法的升级版
为了更好的学习抽象工厂模式,我们先了解产品等级和产品族,相同的产品等级就是相同的产品,如:肯德基的汉堡包和麦当劳的汉堡包,虽然属于不同的餐饮店(工厂),但是属于同一等级的产品。而肯德基的汉堡包、肯德基的薯条 肯德基 炸鸡 肯德基的可乐都同属于一家店(工厂)的一系列相关产品。
抽象工厂模式,它强调了一系列相关对象(统一产品族)的创建过程,而工厂方法模式侧重于同一等级产品的创建,抽象工厂侧重同一产品族创建。也就是说抽象工厂模式下,一个工厂中生产的一系列对象都属于同一个产品族。
2.demo
还是以汉堡包 薯条 炸鸡为例
创建三个接口:汉堡包 薯条 炸鸡
1 public interface Chips { 2 public void chipsInfo(); 3 } 4 5 public interface FriedChicken { 6 public void friedChickenInfo(); 7 } 8 9 public interface Hamburger { 10 public void hambergerInfo(); 11 }
创建具体的产品类:
1 public class KFCChips implements Chips { 2 @Override 3 public void chipsInfo() { 4 System.out.println("肯德基薯条"); 5 } 6 } 7 8 public class KFCFriedChicken implements FriedChicken { 9 @Override 10 public void friedChickenInfo() { 11 System.out.println("肯德基炸鸡"); 12 } 13 } 14 15 public class KFCHamberger implements Hamburger { 16 @Override 17 public void hambergerInfo() { 18 System.out.println("肯德基汉堡"); 19 } 20 }
类图如下:
抽象工厂:
1 public interface Factory { 2 public Chips createChips(); 3 public FriedChicken createFriedChicken(); 4 public Hamburger createHamburger(); 5 }
创建具体的工厂类
1 public class KFCFactory implements Factory { 2 @Override 3 public Chips createChips() { 4 return new KFCChips(); 5 } 6 7 @Override 8 public FriedChicken createFriedChicken() { 9 return new KFCFriedChicken(); 10 } 11 12 @Override 13 public Hamburger createHamburger() { 14 return new KFCHamberger(); 15 } 16 }
在这个工厂里面生产的所有产品对象都不是一个产品等级,它属于同一个产品族,该工厂生产的一系列对象都是相关的。就像定义说的:抽象工厂模式提供一个创建一系列相关或者互相依赖对向的接口。
如果我们还希望创建麦当劳一系列产品,就可以扩展抽象接口创建一系列麦当劳产品类,创建麦当劳工厂生产麦当劳一系列产品
创建抽象的服务员以及具体的服务员:
1 public abstract class Waiter { 2 private Factory factory; 3 public abstract void order(); 4 5 public Waiter(Factory factory) { 6 this.factory = factory; 7 } 8 9 protected Factory getFactory() { 10 return factory; 11 } 12 13 protected void setFactory(Factory factory) { 14 this.factory = factory; 15 } 16 } 17 18 public class KFCWaiter extends Waiter { 19 public KFCWaiter(Factory factory) { 20 super(factory); 21 } 22 23 @Override 24 public void order() { 25 Chips chips = getFactory().createChips(); 26 chips.chipsInfo(); 27 FriedChicken friedChicken = getFactory().createFriedChicken(); 28 friedChicken.friedChickenInfo(); 29 Hamburger hamburger = getFactory().createHamburger(); 30 hamburger.hambergerInfo(); 31 } 32 }
测试:
1 public class Test { 2 public static void main(String[] args) { 3 Factory kfcFactory = new KFCFactory(); 4 Waiter waiter = new KFCWaiter(kfcFactory); 5 waiter.order(); 6 } 7 }
结果:
内容总结
以上是互联网集市为您收集整理的Java设计模式(一)——抽象工厂模式全部内容,希望文章能够帮你解决Java设计模式(一)——抽象工厂模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。