Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package test;
- public class SO {
- public static void main(String[] args) {
- JokePrinter basic = new JokePrinter(new BasicJokeGenerator());
- basic.printJoke("testTopic");
- basic.printJoke("otherTopic");
- JokePrinter good = new JokePrinter(new GoodJokeGenerator());
- good.printJoke("testTopic");
- good.printJoke("otherTopic");
- }
- }
- class JokePrinter {
- private JokeGenerator jg;
- public JokePrinter(JokeGenerator jg) {
- this.jg = jg;
- }
- public void printJoke(String title) {
- System.out.println(jg.generateJoke(title));
- }
- }
- interface JokeGenerator {
- public String generateJoke(String topic);
- }
- class BasicJokeGenerator implements JokeGenerator {
- @Override
- public String generateJoke(String topic) {
- if(topic.equals("testTopic")) {
- //dont use == on strings!
- return "Some lame test joke";
- } else {
- return "Default lame joke";
- }
- }
- }
- class GoodJokeGenerator extends BasicJokeGenerator {
- @Override
- public String generateJoke(String title) {
- String joke = super.generateJoke(title);
- joke = joke.replace("lame", "good");
- return joke;
- }
- }
- /*
- * prints:
- Some lame test joke
- Default lame joke
- Some good test joke
- Default good joke
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement