书上的单选题。搜题得到的结果既有B又有C的,没找出来哪里有错误,恳请各位帮本人解答一下
那你觉得c是错在哪里
Java中byte类型的取值范围是-128至127,所以byte b=128这种写法是不对的,会编译报错。
此模式实例下的UML类图
eclipse结构图
主函数【应用(Application)】
Applicayion.java
package angle_bridgePattern;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Application extends JFrame{
JButton seeWar;
WatchWar watchWar;
Battle battle;
Application(WatchWar war,Battle battle){
watchWar=war;
this.battle=battle;
add(watchWar,BorderLayout.CENTER);
seeWar=new JButton("观战");
add(seeWar,BorderLayout.SOUTH);
seeWar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
watchWar.makeWarContants();
}});
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String args[]) {
Battle battle=new FriendsBattle();
WatchWar war=new FriendsWatchingWar(battle);
Application application1=new Application(war,battle);
application1.setBounds(10,10,200,300);
battle=new GreatGodBattle();
war=new GreatGodWatchingWar(battle);
Application application2=new Application(war,battle);
application2.setBounds(220,10,200,300);
}
}
抽象
WatchWar.java
package angle_bridgePattern;
import javax.swing.*;
import java.awt.*;
public abstract class WatchWar extends JPanel{
Battle battleMaker;
public abstract void makeWarContants () ;
}
实现者
Battle.java
package angle_bridgePattern;
import java.util.ArrayList;
public interface Battle{
public ArrayList<String> makeBattle();
}
细化抽象
FriendsWatchingWar.java
package angle_bridgePattern;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
public class FriendsWatchingWar extends WatchWar implements Runnable{
JLabel showWar;
Thread thread;
ArrayList<String> content;
FriendsWatchingWar(Battle battle){
battleMaker=battle;
setLayout(new BorderLayout());
showWar=new JLabel("好友观战");
showWar.setFont(new Font("",Font.BOLD,39));
add(showWar,BorderLayout.CENTER);
thread=new Thread(this);
}
public void makeWarContants (){
content=battleMaker.makeBattle();
if(!thread.isAlive()){
thread=new Thread(this);
thread.start();
}
}
public void run(){
for(int i=0;i<content.size();i++){
showWar.setText(content.get(i));
try{ Thread.sleep(1500);
}
catch(InterruptedException exp){}
}
}
}
GreatGodWatchingWar.java
package angle_bridgePattern;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
public class GreatGodWatchingWar extends WatchWar implements Runnable{
JLabel showWar;
Thread thread;
ArrayList<String> content;
GreatGodWatchingWar(Battle battle){
battleMaker=battle;
setLayout(new BorderLayout());
showWar=new JLabel("大神观战");
showWar.setFont(new Font("",Font.BOLD,39));
add(showWar,BorderLayout.CENTER);
thread=new Thread(this);
}
public void makeWarContants (){
content=battleMaker.makeBattle();
if(!thread.isAlive()){
thread=new Thread(this);
thread.start();
}
}
public void run(){
for(int i=0;i<content.size();i++){
showWar.setText(content.get(i));
try{ Thread.sleep(1500);
}
catch(InterruptedException exp){}
}
}
}
具体实现者
FriendsBattle.java
package angle_bridgePattern;
import angle_bridgePattern.Battle;
import java.util.ArrayList;
public class FriendsBattle implements Battle{
ArrayList<String> content;
FriendsBattle(){
content=new ArrayList<String>();
}
public ArrayList<String> makeBattle(){
content.clear();
content.add("好友【峡谷一级演员】选择嬴政出战");
content.add("好友【峡谷一级演员】使用嬴政击杀敌方英雄获得一血");
content.add("好友【峡谷一级演员】使用嬴政“无人能挡”");
content.add("好友【峡谷一级演员】向队友发出“集合,保护我方水晶”信号");
content.add("晋级对局结束!好友【峡谷一级演员】晋级失败!");
return content;
}
}
GreatGodBattle.java
package angle_bridgePattern;
import angle_bridgePattern.Battle;
import java.util.ArrayList;
public class GreatGodBattle implements Battle{
ArrayList<String> content;
GreatGodBattle(){
content=new ArrayList<String>();
}
public ArrayList<String> makeBattle(){
content.clear();
content.add("大神玩家【小心边路反杀】选择橘右京出战");
content.add("大神玩家【小心边路反杀】使用橘右京击杀敌方英雄获得一血");
content.add("大神玩家【小心边路反杀】使用橘右京“大杀特杀”");
content.add("大神玩家【小心边路反杀】向队友发出“集合,攻击敌方水晶”信号");
content.add("对局结束!大神玩家获得胜利!");
return content;
}
}
运行结果截图
更多设计模式在王者荣耀中的应用请点击我的→设计模式在王者荣耀中的应用专栏。