设计模式之抽象工厂模式
2015-11-04 15:49
337 查看
package TestDesignPattern; /** * 抽象工厂模式 * 抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。 * 抽象工厂模式的用法:产品分为几个系列,在每个系列中,产品的布局都是类似的,在一个系列中某个位置的产品,在另一个系列中一定有一个对应的产品。 * 这样的产品结构是存在的,这几个系列中同一位置的产品可能是互斥的,它们是针对不同客户的解决方案,每个客户都只选择其一。 * 工厂方法模式、抽象工厂模式最大的区别在于: * 工厂方法模式:针对的是 一个产品等级结构。 * 抽象工厂模式:针对 多个产品等级结构。 */ //抽象工厂--两个工厂 interface KitchenFactory{ public Food getFood();//食品工厂 public TableWare getTableWare();//餐具工厂 } //抽象的食物 interface Food{ public String getFoodName(); } //抽象的餐具 interface TableWare{ public String getToolName(); } //具体工厂 class AKitchen implements KitchenFactory{ @Override public Food getFood() { return new Apple(); } @Override public TableWare getTableWare() { return new Knife(); } } //具体的食品 class Apple implements Food{ public String getFoodName(){ return "apple"; } } //具体的工具 class Knife implements TableWare{ public String getToolName(){ return "knife"; } } //吃货开吃 public class abstractFactoryPattern { //一个吃货的样子 public void eat(KitchenFactory kitchenFactory){ System.out.println("A foodaholic is eating "+kitchenFactory.getFood().getFoodName()+ " with "+kitchenFactory.getTableWare().getToolName()+"....."); } public static void main(String[] args) { abstractFactoryPattern food=new abstractFactoryPattern(); KitchenFactory kf=new AKitchen(); food.eat(kf); } }
相关文章推荐
- 常用linux命令
- The 'to' row (0) must not be less than the 'from' row (1)
- Android Studio 学习笔记
- IOS 本地推送通知
- pch
- 引用第三方jar包,找不到类库
- [leetcode] 63. Unique Paths II 解题报告
- JavaScript计算日期间隔以及结果错误(少一天)的解决方法
- 黑马程序员-------C语言回顾-指针
- caffe官网例程注释(1)----imagenet
- getSession().createQuery("from Users");与getHibernateTemplate().find( "FROM Users);
- 分治算法
- virtualBox虚拟机安装与主机互访和实现上网配置
- memcached一些整理
- tar: 从成员名中删除开头的“/”
- 介绍Web项目中用到的几款JQuery消息提示插件
- animate.css – 齐全的CSS3动画库
- Android 的Camera架构介绍
- android 基础再学习-linkify超链接的简单使用
- 【设计模式】从菜鸟到大鸟之命令模式