单例模式
#单例模式主要实现方式:饿汉、懒汉、双重校验锁
public class HeroAircraft extends AbstractAircraft {
private volatile static HeroAircraft heroAircraft;//私有唯一实例
//构造方法私有
private HeroAircraft(int locationX, int locationY, int speedX, int speedY, int hp) {
super(locationX, locationY, speedX, speedY, hp);
}
//唯一对外接口
public static HeroAircraft getHeroAircraft() {
if (heroAircraft == null) {
synchronized (HeroAircraft.class) {
if (heroAircraft == null) {
heroAircraft = new HeroAircraft(Main.WINDOW_WIDTH / 2,
Main.WINDOW_HEIGHT - ImageManager.HERO_IMAGE.getHeight() ,
0, 0, 100);
}
}
}
return heroAircraft;
}
}
UML示例
工厂模式
public interface EnemyFactory {
public AbstractEnemyAircraft createEnemy();
}
public class MobEnemyFactory implements EnemyFactory{
@Override
public AbstractEnemyAircraft createEnemy(){
return new MobEnemy((int) ( Math.random() * (Main.WINDOW_WIDTH -ImageManager.MOB_ENEMY_IMAGE.getWidth()))*1,(int) (Math.random() * Main.WINDOW_HEIGHT * 0.2)*1,0,10,30);
}
}
public class EliteEnemyFactory implements EnemyFactory{
@Override
public AbstractEnemyAircraft createEnemy(){
return new EliteEnemy(
(int) ( Math.random() * (Main.WINDOW_WIDTH -ImageManager.MOB_ENEMY_IMAGE.getWidth()))*1,(int) (Math.random() * Main.WINDOW_HEIGHT * 0.2)*1,0,10,30);
}
}
public class BossEnemyFactory implements EnemyFactory{
@Override
public AbstractEnemyAircraft createEnemy(){
return new BossEnemy(
(int) ( Math.random() * (Main.WINDOW_WIDTH - ImageManager.MOB_ENEMY_IMAGE.getWidth()))*1,(int) (Math.random() * Main.WINDOW_HEIGHT * 0.2)*1,0,10,30)
}
}