zoukankan      html  css  js  c++  java
  • 设计模式(一) 简单工厂模式

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

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

      不多说直接上代码。

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

  • 相关阅读:
    oracle数据库迁移---windows环境下
    Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)
    64位win系统上面tomcat6启动不了 window不能再本地计算机启动
    linux学习之一些琐碎知识点
    mysql备份与还原
    linux学习中遇到的各种故障与解决方法
    Jmeter调试工具---Debug Sampler
    python+requests接口自动化测试框架实例详解教程
    互联网架构的演变
    面试时如何考察应聘者的素质?
  • 原文地址:https://www.cnblogs.com/alexfly/p/7270638.html
Copyright © 2011-2022 走看看