Java:观察同一类的许多对象

Java:观察同一类的许多对象,java,observer-pattern,Java,Observer Pattern,我正在做家庭作业,我希望有人能给我一两个提示,因为我被卡住了。我有一个Java 21点游戏,它使用模型-视图-控制器结构,我需要扩展这个程序。我必须在这个程序中实现观察者模式 我在模型中有一个玩家类和一个经销商类(经销商扩展了玩家)。我有一个视图类,它保存UI所需的所有代码。Player类实现了Observer接口,View类实现了Observer接口。我还有一个叫做PlayGame的控制器。因此视图类是观察者 我的问题是:当我运行程序时,程序只显示庄家的牌。。。不是球员。或者有时相反-程序显示

我正在做家庭作业,我希望有人能给我一两个提示,因为我被卡住了。我有一个Java 21点游戏,它使用模型-视图-控制器结构,我需要扩展这个程序。我必须在这个程序中实现观察者模式

我在模型中有一个玩家类和一个经销商类(经销商扩展了玩家)。我有一个视图类,它保存UI所需的所有代码。Player类实现了Observer接口,View类实现了Observer接口。我还有一个叫做PlayGame的控制器。因此视图类是观察者

我的问题是:当我运行程序时,程序只显示庄家的牌。。。不是球员。或者有时相反-程序显示玩家的卡,但不显示庄家的卡。。。那么我应该怎么做才能让我的程序“看到”庄家的手和玩家的手呢?我将感谢任何帮助或提示如何解决这个问题

我知道观察者模式是如何工作的,但由于某种原因,我不知道如何使它“观察”同一类的两个对象。我需要让它观察玩家类的两个不同对象(我把庄家和玩家算作同一类型,因为庄家正在扩展玩家类)

代码如下:

玩家等级:

    public class Player implements Observable{

      private List<Card> m_hand;
      private ArrayList<Observer> handOfCards;

      public Player()
      {

        m_hand = new LinkedList<Card>();
        handOfCards = new ArrayList<Observer>();
      }

      public void DealCard(Card a_addToHand)
      {
        m_hand.add(a_addToHand);
        notifyObservers();
      }

      public void addObserver(Observer o) {
          handOfCards.add(o);
      }

      public void notifyObservers() {
          for(Observer o : handOfCards){
                o.update(m_hand, this);
          }
      }

再次感谢你的帮助。。。我只是不知道如何解决这个问题。

观测者界面有一个
更新
方法,定义如下:

notifyObservers
中,您已经编写了

o.update(m_hand, this);
但是
这个
是一个
播放器
,它实现了
可观察的
,所以您首先需要:

o.update(this, m_hand);
第二个参数
mu hand
,我想,是您希望传递给观察者的参数。但是,在实现
Observer
的类中,
update
方法必须具有与javadoc中定义的参数类型相同的参数类型:

public void update(Observable o, Object hand) {
即使您知道
hand
始终是
List
,参数仍然必须是
对象,因为类型必须与界面中的类型匹配。然后,您必须对其进行强制转换,才能像使用
列表一样使用它:

public void update(Observable o, Object handArg) {
    List<Card> hand = (List<Card>)handArg;
public void更新(可观察到的o,对象handArg){
List hand=(List)handArg;

实现
观察者的类在哪里?好的,我看到它是“视图”类。您需要一个
更新
方法,该方法有两个参数,一个
可观察
和一个
对象
,以匹配该方法。
o.update(this, m_hand);
public void update(Observable o, Object hand) {
public void update(Observable o, Object handArg) {
    List<Card> hand = (List<Card>)handArg;