03设计模式之门面模式和调停者模式

应用:

GateWay网关就是Facade门面模式
消息中间件就是Mediator调停者模式。

具体利用坦克大战的java版的游戏来看

package com.wwj.tank;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;

/**

 * @author wwj
   */
   public class GameMode extends Frame {

   private static final GameMode instance = new GameMode();

   private Tank myTank = new Tank(200,200,Dir.DOWN,Group.GOOD);
   public static  final int GAMEWIDTF = 800,GAMEHEIGHT=600;

   private ArrayList<GameObject> gameObjects = new ArrayList<>();
   ColliderChain colliderChain = new ColliderChain();

   public void add(GameObject gameObject){
       this.gameObjects.add(gameObject);
   }

   public void remove(GameObject gameObject){
       this.gameObjects.remove(gameObject);
   }

   private GameMode(){
       this.setSize(GAMEWIDTF,GAMEHEIGHT);
       this.setResizable(false);
       this.setTitle("Tank Game");
       this.setVisible(true);
       this.addKeyListener(new MyKeyListing());
       this.setBackground(Color.BLACK);
       this.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
   }

   public static GameMode getInstance(){
       return instance;
   }
       public void paint(Graphics g){

    //画出界面提示
    g.setColor(Color.WHITE);

    //将元素全部画出
    myTank.paint(g);

    for(int index = 0; index < gameObjects.size();index++){
        gameObjects.get(index).paint(g);
    }

    //子弹与坦克的碰撞检测
    for (int i = 0; i < gameObjects.size(); i++) {
        for (int j = i+1; j < gameObjects.size(); j++) {
            GameObject o1 = gameObjects.get(i);
            GameObject o2 = gameObjects.get(j);
            colliderChain.collide(o1,o2);
        }
    }
}

对于多个游戏物体而言GameMode就是调停者
对于main方法看GameMode就是门面
(概念性比较强,理解这种模式的感觉)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 门面模式Facade和调停者模式Mediator在1个项目或游戏中,我们通常会有很复杂的相互之间的关系,A系统依赖...
    jack_programme阅读 2,047评论 0 0
  • 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不...
    珈谊阅读 2,761评论 0 0
  • 1. 介绍一下 如何实现动态代理? 参考回答: Java实现动态代理的大致步骤如下: 1.定义一个委托类和公共接口...
    是小猪童鞋啦阅读 3,085评论 0 0
  • 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设...
    闽越布衣阅读 3,468评论 0 0
  • 构造型模式 Factory Method (工厂方法) Abstract Factory(抽象工厂) Builde...
    738bc070cd74阅读 3,021评论 1 4

友情链接更多精彩内容