Advertisement
rafibatam

Design Pattern State JAVA

Feb 26th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.79 KB | None | 0 0
  1. 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. 2. Kelebihan State Pattern = Kemudahan untuk menambah class baru yag berasal dari state.
  3. 3. Kekurangan State Pattern = Setiap kelas turunan dari state memiliki pengetahuan sambungan yang memperkenalkan dependensi antara subclass.
  4. 4. Kapan digunakan State Pattern =
  5. 5. Apa yang dilakukan ketika tidak boleh menggunakan State Pattern =
  6.  
  7. // BankAccountState.java
  8. public interface BankAccountState {
  9.     void inputUsername(String username);
  10.     void inputPassword(String password);
  11.     void wrongUsername();
  12.     void wrongPassword();
  13. }
  14.  
  15. // Login.java
  16. public class Login {
  17.     BankAccountState hasUsername;
  18.     BankAccountState hasPassword;
  19.     BankAccountState noUsername;
  20.     BankAccountState noPassword;
  21.  
  22.     BankAccountState accountState;
  23.  
  24.     int accountAlready = 1;
  25.     boolean correctUsernameEntered = false;
  26.     boolean correctPasswordEntered = false;
  27.  
  28.     public Login() {
  29.         hasUsername = new HasUsername(this);
  30.         hasPassword = new HasPassword(this);
  31.         noUsername = new NoUsername(this);
  32.         noPassword = new NoPassword(this);
  33.  
  34.         accountState = noUsername;
  35.        
  36.         if(accountAlready < 0) {
  37.             accountState = noUsername;
  38.         }
  39.     }
  40.    
  41.     void setBankAccountState(BankAccountState newBankAccountState) {
  42.         accountState = newBankAccountState;
  43.     }
  44.  
  45.     public void inputUsername(String Username) {
  46.         accountState.inputUsername(Username);
  47.     }
  48.    
  49.     public void inputPassword(String Password) {
  50.         accountState.inputPassword(Password);
  51.     }
  52.  
  53.     public BankAccountState getUsername() {
  54.         return hasUsername;
  55.     }
  56.  
  57.     public BankAccountState getPassword() {
  58.         return hasPassword;
  59.     }
  60.  
  61.     public BankAccountState getNoUsername() {
  62.         return noUsername;
  63.     }
  64.  
  65.     public BankAccountState getNoPassword() {
  66.         return noPassword;
  67.     }
  68. }
  69.  
  70. // HasUsername.java
  71. public class HasUsername implements BankAccountState {
  72.     Login login;
  73.  
  74.     public HasUsername(Login newLogin) {
  75.         login = newLogin;
  76.     }
  77.  
  78.     @Override
  79.     public void inputUsername(String Username) {
  80.         if(Username == "user") {
  81.             System.out.println("Correct Username!");
  82.             login.correctUsernameEntered = true;
  83.             login.setBankAccountState(login.getUsername());
  84.         }
  85.  
  86.         else {
  87.             System.out.println("Wrong Username!");
  88.             login.correctUsernameEntered = false;
  89.             System.out.println("Please Try Again");
  90.             login.setBankAccountState(login.getNoUsername());
  91.         }
  92.     }
  93.  
  94.     @Override
  95.     public void inputPassword(String Password) {
  96.         if(Password == "admin") {
  97.             System.out.println("Correct Password!");
  98.             login.correctPasswordEntered = true;
  99.             login.setBankAccountState(login.getPassword());
  100.         }
  101.        
  102.         else {
  103.             System.out.println("Wrong Password!");
  104.             login.correctPasswordEntered = false;
  105.             System.out.println("Please Try Again");
  106.             login.setBankAccountState(login.getNoPassword());
  107.         }
  108.     }
  109.  
  110.     @Override
  111.     public void wrongUsername() {
  112.         System.out.println("Wrong Username!");
  113.         login.correctUsernameEntered = false;
  114.         System.out.println("Please Try Again");
  115.         login.setBankAccountState(login.getNoUsername());
  116.     }
  117.  
  118.     @Override
  119.     public void wrongPassword() {
  120.         System.out.println();
  121.     }
  122. }
  123.  
  124. // HasPassword.java
  125. public class HasPassword implements BankAccountState {
  126.     Login login;
  127.  
  128.     public HasPassword(Login newLogin) {
  129.         login = newLogin;
  130.     }
  131.    
  132.     @Override
  133.     public void inputUsername(String Username) {
  134.         if(Username == "user") {
  135.             System.out.println("Correct Username!");
  136.             login.correctUsernameEntered = true;
  137.             login.setBankAccountState(login.getUsername());
  138.         }
  139.  
  140.         else {
  141.             System.out.println("Wrong Username!");
  142.             login.correctUsernameEntered = false;
  143.             System.out.println("Please Try Again");
  144.             login.setBankAccountState(login.getNoUsername());
  145.         }
  146.     }
  147.  
  148.     @Override
  149.     public void inputPassword(String Password) {
  150.         if(Password == "admin") {
  151.             System.out.println("Correct Password!");
  152.             login.correctPasswordEntered = true;
  153.             login.setBankAccountState(login.getPassword());
  154.         }
  155.        
  156.         else {
  157.             System.out.println("Wrong Password!");
  158.             login.correctPasswordEntered = false;
  159.             System.out.println("Please Try Again");
  160.             login.setBankAccountState(login.getNoPassword());
  161.         }
  162.     }
  163.  
  164.     @Override
  165.     public void wrongUsername() {
  166.         System.out.println();
  167.     }
  168.  
  169.     @Override
  170.     public void wrongPassword() {
  171.         System.out.println("Wrong Password!");
  172.         login.correctPasswordEntered = false;
  173.         System.out.println("Please Try Again");
  174.         login.setBankAccountState(login.getNoPassword());
  175.     }
  176. }
  177.  
  178. // NoUsername.java
  179. public class NoUsername implements BankAccountState {
  180.     Login login;
  181.    
  182.     public NoUsername(Login newLogin) {
  183.         login = newLogin;
  184.     }
  185.  
  186.     @Override
  187.     public void inputUsername(String Username) {
  188.         if(Username == "user") {
  189.             System.out.println("Correct Username!");
  190.             login.correctUsernameEntered = true;
  191.             login.setBankAccountState(login.getUsername());
  192.         }
  193.  
  194.         else {
  195.             System.out.println("Wrong Username!");
  196.             login.correctUsernameEntered = false;
  197.             System.out.println("Please Try Again");
  198.             login.setBankAccountState(login.getNoUsername());
  199.         }
  200.     }
  201.  
  202.     @Override
  203.     public void inputPassword(String Password) {
  204.         System.out.println("Already Entered Password");
  205.     }
  206.  
  207.     @Override
  208.     public void wrongUsername() {
  209.         System.out.println("Wrong Username!");
  210.         login.correctUsernameEntered = false;
  211.         System.out.println("Please Try Again");
  212.         login.setBankAccountState(login.getNoUsername());
  213.     }
  214.  
  215.     @Override
  216.     public void wrongPassword() {
  217.         System.out.println();
  218.     }
  219. }
  220.  
  221. // NoPassword.java
  222. public class NoPassword implements BankAccountState {
  223.     Login login;
  224.  
  225.     public NoPassword(Login newLogin) {
  226.         login = newLogin;
  227.     }
  228.  
  229.     @Override
  230.     public void inputUsername(String Username) {
  231.         System.out.println("Already Entered Username");
  232.     }
  233.  
  234.     @Override
  235.     public void inputPassword(String Password) {
  236.         if(Password == "admin") {
  237.             System.out.println("Correct Password!");
  238.             login.correctPasswordEntered = true;
  239.             login.setBankAccountState(login.getPassword());
  240.         }
  241.  
  242.         else {
  243.             System.out.println("Wrong Password!");
  244.             login.correctPasswordEntered = false;
  245.             System.out.println("Please Try Again");
  246.             login.setBankAccountState(login.getNoPassword());
  247.         }
  248.     }
  249.  
  250.     @Override
  251.     public void wrongUsername() {
  252.         System.out.println();
  253.     }
  254.  
  255.     @Override
  256.     public void wrongPassword() {
  257.         System.out.println("Wrong Password!");
  258.         login.correctPasswordEntered = false;
  259.         System.out.println("Please Try Again");
  260.         login.setBankAccountState(login.getNoPassword());  
  261.     }
  262. }
  263.  
  264.  
  265.  
  266. // TestBankAccount.java
  267. public class TestBankAccount {
  268.     public static void main(String[] args) {
  269.         Login accountState = new Login();
  270.         System.out.println("\t\t\t\tLOGIN");
  271.         System.out.print("Username : ");
  272.         accountState.inputUsername("user");
  273.         System.out.print("Password : ");
  274.         accountState.inputPassword("admin");
  275.     }
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement