抽象工厂模式第三步-使用抽象工厂模式-马士兵设计模式教程 .
来源:互联网 发布:阿里云邮箱smtp服务器 编辑:程序博客网 时间:2024/04/30 08:22
其实使用abstract和interface只是根据你的需求来使用,在一些问题上并无太大的区别
简单的工厂在产生产品系列(武器,食品等)的时候会很麻烦,会导致工厂泛滥
抽象工厂在产生产品种类(枪,苹果等)的时候需要修改的地方会很多
public class Person {public static void main(String[] args) {AbstractFactory f1=new DefaultFactory();Weapon w1=f1.createWeapon();Transport t1=f1.createTransport();t1.run();w1.shot();/** * 我开着汽车 * 拿着AK47手枪 *///如果要修改的话只需要修改工厂的实现方法即可AbstractFactory f=new MagicFactory();Weapon w=f.createWeapon();Transport t=f.createTransport();t.run();w.shot();/** * 我骑着扫帚.. * 拿着魔法棒 */}}//抽象工厂public abstract class AbstractFactory {public abstract Weapon createWeapon();//武器的简单工厂public abstract Transport createTransport();//交通工具的简单工厂}public class DefaultFactory extends AbstractFactory{ @Override public Transport createTransport() { return new Car(); } @Override public Weapon createWeapon() { return new AK47(); }}public class MagicFactory extends AbstractFactory{ @Override public Transport createTransport() { return new Broom(); } @Override public Weapon createWeapon() { return new MagicStick(); }}//武器public interface Weapon {<SPAN style="WHITE-SPACE: pre"> </SPAN>void shot(); }//交通工具public interface Transport { void run();}public class Car implements Transport{public void run(){ System.out.println("我开着汽车");}}public class AK47 implements Weapon{ public void shot(){ System.out.println("拿着AK47手枪"); }}public class Broom implements Transport{public void run(){ System.out.println("我骑着扫帚..");}}public class MagicStick implements Weapon {public void shot(){ System.out.println("拿着魔法棒");}}
本文转自:http://blog.csdn.net/wxwzy738/article/details/7588562
- 抽象工厂模式第三步-使用抽象工厂模式-马士兵设计模式教程 .
- 抽象工厂模式第三步-使用抽象工厂模式
- 第三篇 设计模式--抽象工厂模式
- 设计模式:抽象工厂模式|菜鸟教程
- 抽象工厂模式第二步-使用简单工厂模式
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 用button代替file控件
- 什么是web service
- mtk cpu 的boot.img解压方式
- JavaScript中的prototype属性
- Random Forests原理
- 抽象工厂模式第三步-使用抽象工厂模式-马士兵设计模式教程 .
- strsuts2使用标签防止表单重复提交
- 死区发生器(DB)子模块的特点
- c编译
- LINUX命令及文件系统
- ios学习--openURL的使用方法
- Delphi编程技术简介
- php 分页类
- 随机森林 Random Trees(一)