Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. State Pattern adalah sebuah design pattern dimana sebuah object bisa mengganti-ganti aksesnya ke object lain untuk menggali informasi, tergantung internal state atau inputnya.
- 2. Kelebihan State Pattern = Kemudahan untuk menambah class baru yag berasal dari state.
- 3. Kekurangan State Pattern = Setiap kelas turunan dari state memiliki pengetahuan sambungan yang memperkenalkan dependensi antara subclass.
- 4. Kapan digunakan State Pattern =
- 5. Apa yang dilakukan ketika tidak boleh menggunakan State Pattern =
- // BankAccountState.java
- public interface BankAccountState {
- void inputUsername(String username);
- void inputPassword(String password);
- void wrongUsername();
- void wrongPassword();
- }
- // Login.java
- public class Login {
- BankAccountState hasUsername;
- BankAccountState hasPassword;
- BankAccountState noUsername;
- BankAccountState noPassword;
- BankAccountState accountState;
- int accountAlready = 1;
- boolean correctUsernameEntered = false;
- boolean correctPasswordEntered = false;
- public Login() {
- hasUsername = new HasUsername(this);
- hasPassword = new HasPassword(this);
- noUsername = new NoUsername(this);
- noPassword = new NoPassword(this);
- accountState = noUsername;
- if(accountAlready < 0) {
- accountState = noUsername;
- }
- }
- void setBankAccountState(BankAccountState newBankAccountState) {
- accountState = newBankAccountState;
- }
- public void inputUsername(String Username) {
- accountState.inputUsername(Username);
- }
- public void inputPassword(String Password) {
- accountState.inputPassword(Password);
- }
- public BankAccountState getUsername() {
- return hasUsername;
- }
- public BankAccountState getPassword() {
- return hasPassword;
- }
- public BankAccountState getNoUsername() {
- return noUsername;
- }
- public BankAccountState getNoPassword() {
- return noPassword;
- }
- }
- // HasUsername.java
- public class HasUsername implements BankAccountState {
- Login login;
- public HasUsername(Login newLogin) {
- login = newLogin;
- }
- @Override
- public void inputUsername(String Username) {
- if(Username == "user") {
- System.out.println("Correct Username!");
- login.correctUsernameEntered = true;
- login.setBankAccountState(login.getUsername());
- }
- else {
- System.out.println("Wrong Username!");
- login.correctUsernameEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoUsername());
- }
- }
- @Override
- public void inputPassword(String Password) {
- if(Password == "admin") {
- System.out.println("Correct Password!");
- login.correctPasswordEntered = true;
- login.setBankAccountState(login.getPassword());
- }
- else {
- System.out.println("Wrong Password!");
- login.correctPasswordEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoPassword());
- }
- }
- @Override
- public void wrongUsername() {
- System.out.println("Wrong Username!");
- login.correctUsernameEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoUsername());
- }
- @Override
- public void wrongPassword() {
- System.out.println();
- }
- }
- // HasPassword.java
- public class HasPassword implements BankAccountState {
- Login login;
- public HasPassword(Login newLogin) {
- login = newLogin;
- }
- @Override
- public void inputUsername(String Username) {
- if(Username == "user") {
- System.out.println("Correct Username!");
- login.correctUsernameEntered = true;
- login.setBankAccountState(login.getUsername());
- }
- else {
- System.out.println("Wrong Username!");
- login.correctUsernameEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoUsername());
- }
- }
- @Override
- public void inputPassword(String Password) {
- if(Password == "admin") {
- System.out.println("Correct Password!");
- login.correctPasswordEntered = true;
- login.setBankAccountState(login.getPassword());
- }
- else {
- System.out.println("Wrong Password!");
- login.correctPasswordEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoPassword());
- }
- }
- @Override
- public void wrongUsername() {
- System.out.println();
- }
- @Override
- public void wrongPassword() {
- System.out.println("Wrong Password!");
- login.correctPasswordEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoPassword());
- }
- }
- // NoUsername.java
- public class NoUsername implements BankAccountState {
- Login login;
- public NoUsername(Login newLogin) {
- login = newLogin;
- }
- @Override
- public void inputUsername(String Username) {
- if(Username == "user") {
- System.out.println("Correct Username!");
- login.correctUsernameEntered = true;
- login.setBankAccountState(login.getUsername());
- }
- else {
- System.out.println("Wrong Username!");
- login.correctUsernameEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoUsername());
- }
- }
- @Override
- public void inputPassword(String Password) {
- System.out.println("Already Entered Password");
- }
- @Override
- public void wrongUsername() {
- System.out.println("Wrong Username!");
- login.correctUsernameEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoUsername());
- }
- @Override
- public void wrongPassword() {
- System.out.println();
- }
- }
- // NoPassword.java
- public class NoPassword implements BankAccountState {
- Login login;
- public NoPassword(Login newLogin) {
- login = newLogin;
- }
- @Override
- public void inputUsername(String Username) {
- System.out.println("Already Entered Username");
- }
- @Override
- public void inputPassword(String Password) {
- if(Password == "admin") {
- System.out.println("Correct Password!");
- login.correctPasswordEntered = true;
- login.setBankAccountState(login.getPassword());
- }
- else {
- System.out.println("Wrong Password!");
- login.correctPasswordEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoPassword());
- }
- }
- @Override
- public void wrongUsername() {
- System.out.println();
- }
- @Override
- public void wrongPassword() {
- System.out.println("Wrong Password!");
- login.correctPasswordEntered = false;
- System.out.println("Please Try Again");
- login.setBankAccountState(login.getNoPassword());
- }
- }
- // TestBankAccount.java
- public class TestBankAccount {
- public static void main(String[] args) {
- Login accountState = new Login();
- System.out.println("\t\t\t\tLOGIN");
- System.out.print("Username : ");
- accountState.inputUsername("user");
- System.out.print("Password : ");
- accountState.inputPassword("admin");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement