daily pastebin goal
41%
SHARE
TWEET

Untitled

a guest Jan 29th, 2018 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public interface BirdType {}
  2. public class BlueJay implements BirdType {}
  3. public class Cardinal implements BirdType {}
  4. public class Canary implements BirdType {}
  5.    
  6. public interface BirdCamera<BT extends BirdType> {}
  7. public interface BirdCall<BT extends BirdType> {}
  8. public class BlueJayCamera implements BirdCamera<BlueJay> {}
  9. public class CardinalCamera implements BirdCamera<Cardinal> {}
  10. public class CanaryCamera implements BirdCamera<Canary> {}
  11. public class BlueJayCall implements BirdCall<BlueJay> {}
  12. public class CardinalCall implements BirdCall<Cardinal> {}
  13. public class CanaryCall implements BirdCall<Canary> {}
  14.    
  15. public interface Photographer
  16.   <BT extends BirdType,
  17.    CAM extends BirdCamera<BT>,
  18.    CAL extends BirdCall<BT>>
  19. {
  20.   CAM getPhotographersCamera();
  21.   CAL getPhotographersBirdCall();
  22.   void examineCamera(CAM camera);
  23. }
  24.    
  25. public class BlueJayPhotographer implements Photographer<BlueJay, BlueJayCamera, BlueJayCall> {
  26.  
  27.   @Override
  28.   public BlueJayCamera getPhotographersCamera() {
  29.     //Do bluejay specific logic
  30.     return new BlueJayCamera();
  31.   }
  32.  
  33.   @Override
  34.   public BlueJayCall getPhotographersBirdCall() {
  35.     //Do bluejay specific logic
  36.     return new BlueJayCall();
  37.   }
  38.  
  39.   @Override
  40.   public void examineCamera(BlueJayCamera camera) {
  41.     //Do bluejay specific logic
  42.   }
  43. }
  44.    
  45. public class ConfusedPhotographer implements Photographer<BlueJay, CardinalCamera, CanaryCall>
  46.    
  47. public class PhotographerProvider {
  48.   public Photographer get(int birdCode) {
  49.     if (birdCode == 0) {
  50.       return new BlueJayPhotographer();
  51.     }
  52.     else if (birdCode == 1) {
  53.       return new CardinalPhotographer();
  54.     }
  55.     else if (birdCode == 2) {
  56.       return new CanaryPhotographer();
  57.     }
  58.     else {
  59.       throw new IllegalArgumentException("Unsupported bird code: " + birdCode);
  60.     }
  61.   }
  62. }
  63.    
  64. public void importantMethod(PhotographerProvider photographerProvider) {
  65.     // blah blah logic goes here
  66.     int mostCommonBirdType = 1;
  67.     Photographer typicalTourist = photographerProvider.get(mostCommonBirdType);
  68.     BirdCamera cam = typicalTourist.getPhotographersCamera();
  69.     typicalTourist.examineCamera(cam);
  70.     // blah blah more logic here
  71.   }
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top