Skip to content

Instantly share code, notes, and snippets.

@StefMa
Last active September 11, 2015 11:42
Show Gist options
  • Save StefMa/c19920feebee481816db to your computer and use it in GitHub Desktop.
Save StefMa/c19920feebee481816db to your computer and use it in GitHub Desktop.
A simple Proxy Pattern in Java
package secure;
class LukeSkywalkerPassword implements Password {
@Override
public String getPassword() {
return "F33lTheF0rc3";
}
}
public class Main {
public static void main(String[] args) {
PasswordManager manager = new PasswordManager();
manager.setUser(new User("Stormtrooper 1", 22));
System.out.println(manager.getPassword());
manager.setUser(new User("Luke Skywalker", 21));
System.out.println(manager.getPassword());
manager.setUser(new User("Tom Hanks", 55));
System.out.println(manager.getPassword());
}
}
package secure;
public interface Password {
String getPassword();
}
package secure;
public class PasswordManager implements Password {
private User user;
public void setUser(User user) {
this.user = user;
}
@Override
public String getPassword() {
if (user.name.equals("Stormtrooper 1") && user.age == 22) {
return new Stromtrooper1Password().getPassword();
} else if (user.name.equals("Luke Skywalker") && user.age == 21) {
return new LukeSkywalkerPassword().getPassword();
}
return null;
}
}
package secure;
class Stromtrooper1Password implements Password {
@Override
public String getPassword() {
return "St0rmTr00p3r";
}
}
package secure;
public class User {
String name;
int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment