抽象工厂模式第三步-使用抽象工厂模式-马士兵设计模式教程 .

来源:互联网 发布:阿里云邮箱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
原创粉丝点击