• 设计模式(一) 简单工厂模式


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

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

      不多说直接上代码。

      首先有个坦克类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等。

  • 相关阅读:
    实例图解SQL SERVER2000使用AWE进行内存优化
    使用Power Designer正反向数据库及生成设计报告
    使用SVN+CruiseControl+ANT实现持续集成之二环境搭建和配置介绍
    使用SVN+CruiseControl+ANT实现持续集成之三构建操作及监视
    【排序】排序算法之分配排序
    [Cocoa]自定义TableViewCell实现圆角/渐变色TableView
    [Cocoa]XCode 3.2 常用快捷键
    [Cocoa]实现了一套自定义动画库
    Vim 使用入门快捷键
    [Cocoa] iPhone/iPad 时区转换
  • 原文地址:https://www.cnblogs.com/alexfly/p/7270638.html
Copyright © 2020-2023  润新知