设计模式之抽象工厂
来源:互联网 发布:linux无法定位软件包 编辑:程序博客网 时间:2024/06/08 15:42
抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
应用场景:想必大家都玩过暴力摩托这款游戏(暴露了年龄),在游戏中赛车手可以骑行摩托和携带武器,我们假定他拿的武器是AK47(好拉风有木有)。这只是在普通的模式下,现在我们虚拟一个魔法模式。在魔法模式下赛车手骑的是扫把(对,你没有看错,是扫把)。手里拿的是魔法棒。
IabstractFactory接口
public interface IabstractFactory { public IVehicle createVehicle(int i); public IWeapon createWeapon(int i);}
IVehicle接口
public interface IVehicle { public void run();}
IWeapon接口
public interface IWeapon { public void attack();}
普通模式
public class DefaultFactory implements IabstractFactory{ @Override public IVehicle createVehicle(int i) { return new Moto(); } @Override public IWeapon createWeapon(int i) { return new AK47(); }}
魔法模式
public class MagicFactory implements IabstractFactory{ @Override public IVehicle createVehicle(int i) { return new Broom(); } @Override public IWeapon createWeapon(int i) { return new MagicStick(); }}
AK47类
public class AK47 implements IWeapon{ @Override public void attack() { System.out.println("AK47...."); }}
魔法棒
public class MagicStick implements IWeapon{ @Override public void attack() { System.out.println("MagicStick ....."); }}
摩托车类
public class Moto implements IVehicle{ @Override public void run() { System.out.println("Moto....."); }}
扫把类
public class Broom implements IVehicle{ @Override public void run() { System.out.println("Broom...."); }}
测试类
public class Test { public static void main(String[] args) { IabstractFactory f = new MagicFactory(); f.createVehicle(1).run(); f.createWeapon(1).attack(); }}
测试结果
0 0
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之-抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 多任务多线程断点续传框架-总序
- nginx+gunicorn+virtualenv部署django项目
- 界面问题的总结
- 验证码倒计时
- 监听UITextField的内容变化,获取键盘的模式
- 设计模式之抽象工厂
- vs2015打开EXCEL文档范例及其注意事项!!!
- handler的机制和例子解析
- intellij projectStructure
- 第二阶段 1、完善整体流程
- 值得推荐的C/C++框架和库
- Photoshop CS6自学(五)图片编辑
- Gradle使用简记
- JVM学习笔记(二)---类加载器