设为首页 加入收藏

TOP

设计模式(一) 简单工厂模式
2017-10-10 13:00:09 】 浏览:3580
Tags:设计模式 简单 工厂 模式

  简单工厂模式,就是有一个工厂类,负责生成所需要的实体类。

  这让我想起了红警,在红警里,如果需要造一辆坦克,需要先有一个战车工厂,在坦克工厂里选择坦克类型,然后坦克工厂才会生成所需要的坦克。

  不多说直接上代码。

  首先有个坦克类Panzer(哈哈我的侠盗猎车似乎就记得这么一个作弊秘籍了)

public class Panzer {
    protected String name;
    public void move(){
        System.out.println(name+"移动了!");
    }    
}

  有两个类型的坦克,一个是灰熊坦克,一个是光凌坦克

public class BearPanzer extends Panzer{
    public BearPanzer(){
        name="灰熊坦克";
        System.out.println(name+"制造完成");
    }
}

public class EdgelightPanzer extends Panzer{
    public EdgelightPanzer(){
        name="光棱坦克";
        System.out.println(name+"制造完成");
    }
}

  提前准备好咱们的坦克工厂,假设咱们光造坦克,就叫它PanzerFactory吧

public class PanzerFactory {
    public static Panzer createPanzer(String panzerName){
        Panzer panzer=null;
        switch (panzerName) {
        case "灰熊坦克":
            panzer=new BearPanzer();
            break;
        case "光棱坦克":
            panzer=new EdgelightPanzer();
            break;
        default:
            break;
        }
        return panzer;
    }
}

   哈哈,终于搞定,先开一盘游戏试试

public class RedAlert {
    public static void main(String[] args) {
        System.out.println("开局......");

        PanzerFactory factory=new PanzerFactory();
        System.out.println("开始造坦克");
        Panzer panzer1=factory.createPanzer("灰熊坦克");
        Panzer panzer2=factory.createPanzer("光棱坦克");
        panzer1.move();
        panzer2.move();
        
        System.out.println("YOU WIN!");
    }
}

 

 游戏界面(-_-|||):

  游戏胜利啦(话说以前玩也没怎么赢过,如今代码在手,天下我有23333).

  思考时间:

  为什么要用工厂模式?有什么好处?

  首先工厂模式使用了多态,创建的类都是Panzer的子类,当然,接口也是同样的道理,一样适用,这样可以通过父类的引用直线子类。

  工厂模式封装了对类的创建,这样可以减少我们创建类对象时的错误,还可以在类创建时进行一些其他的控制比如打印log等。

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇redis 简单使用总结 下一篇JavaScript | 创建对象的9种方法..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目