Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Polimorfismo

Visualizzazione discussione

  1. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Potresti crearti un'interfaccia che esponga il metodo di calcolo del bonus:


    codice:
    public interface PlayerBonus {
        void doBonus(Player player);
    }

    In base ai bonus che vuoi assegnare crearai la corrispondente specializzazione:


    codice:
    public class MoneyBonus implements PlayerBonus<Money> {
        private final Money money;
        
        public MoneyBonus(Money money) { this.money = money;  }  
        
        @Override
        public void doBonus(Player player) {
            player.setMoney(money);
        }
    }
    
    
    public class StuffBonus implements PlayerBonus {
        private final Something something;
        
        public StuffBonus(Something something) { this.something = something;  }
        
        @Override
        public void doBonus(Player player) {
            player.setStuff(something);
        }
    }



    L'utilizzo sarà una cosa del genere:


    codice:
    public class Player {
        ...
        
        public void acquisisciBonus(List<Bonus> bonusList) {
            for (Bonus bonus : bonusList ) {
                bonus.doBonus(this);
            }
        }
    }
    
    
    public class Main {
        public static void main(String[] args) {
            List<Bonus> bonusList = new ArrayList();
            bonusList.add(new MoneyBonus(new Money(100, "€")));
            bonusList.add(new StuffBonus(new Something("funny stuff")));
     
            Player player = ...
            player.acquisciBonus(bonusList);
        }
    }

    Che dici?
    Ultima modifica di Alex'87; 18-05-2016 a 12:56

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.