Advertisement
PaleoCrafter

Untitled

May 4th, 2015
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.35 KB | None | 0 0
  1. interface Upgrade {
  2.     // common stuff for all upgrades
  3. }
  4.  
  5. interface UniversalUpgrade {
  6.     // marker interface, could also go with a boolean isUniversal() method in Upgrade
  7. }
  8.  
  9. [abstract] class WeaponUpgrade implements Upgrade {
  10.     // weapon specific stuff
  11. }
  12.  
  13. [abstract] class ArmorUpgrade implements Upgrade {
  14.     // armor specific stuff
  15. }
  16.  
  17. class UpgradeManager {
  18.     private Map<String, Upgrade> upgrades;
  19.  
  20.     public void registerUpgrade(String id, Upgrade upgrade) {
  21.         upgrades.put(id, upgrade);
  22.     }
  23.  
  24.     public Collection<UniversalUpgrade> universalUpgrades() {
  25.         return upgrades.values().stream().filter(u -> u instanceof UniversalUpgrade).collect(Collectors.toList()); 
  26.     }
  27.  
  28.     // or
  29.  
  30.     public Collection<Upgrade> universalUpgrades() {
  31.         return upgrades.values().stream().filter(Upgrade::isUniversal).collect(Collectors.toList());   
  32.     }
  33.  
  34.     public Collection<WeaponUpgrade> weaponUpgrades() {
  35.         return upgrades.values().stream().filter(u -> u instanceof WeaponUpgrade).collect(Collectors.toList());
  36.     }
  37.  
  38.     public Collection<ArmorUpgrade > armorUpgrades() {
  39.         return upgrades.values().stream().filter(u -> u instanceof ArmorUpgrade).collect(Collectors.toList()); 
  40.     }
  41.  
  42.     public <U extends Upgrade> upgrades(Class<U> upgradeType) {
  43.         return upgrades.values().stream().filter((u) -> upgradeType.isApplicableFrom(u.getClass())).collect(Collectors.toList());
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement