Proxy pattern adalah design pattern dimana ada sebuah class yang dimana class tersebut mempresentasikan fungsionalitas class yang lain. Pattern ini mewakili fungsionalitas objek lain yang seolah-olah class tersebut lah yang melakukannya. Proxy pattern ini termasuk ke dalam Structural Pattern.
Berikut ini kami berikan dua contoh pembuatan Proxy Pattern dimana dalam perogram pertama adalah program pengaksesan ke sebuah folder, sedangkan program yang kedua adalah program penampil gambar. Kedua program tersebut memiliki kesamaan yaitu dimana masing-masing kelas proxy-nya mempersentasikan fungsionalitas kelas yang lain.
Note : Bagi pengguna mobile, mohon aktifkan JavaScript dan matikan fitur Google Web Light untuk melihat kode berikut secara keseluruhan.
Contoh Pertama :
1. Buat interface IFolder.java
package main; public interface IFolder { public void performOperations(); }
2. Buat class User.java
package main; class User { String userName; String password; public User(String username, String password) { this.userName = username; this.password = password; } public String getUsername(){ return userName; } public String getPassword() { return password; } }
3. Buat class Folder.java implements ke IFolder.java
package main; public class Folder implements IFolder { @Override public void performOperations() { System.out.println("Kamu sekarang sedang mengakses folder .... "); } }
4. Buat class FolderFroxy.java implements IFolder.java
package main; public class FolderFroxy implements IFolder{ User user; Folder folder; public FolderFroxy(User user) { this.user = user; } @Override public void performOperations() { if(user.getUsername().equalsIgnoreCase("leman") && user.getPassword().equals("password")){ folder = new Folder(); folder.performOperations(); }else{ System.out.println("Kamu tidak diberi ijin untuk mengakses folder ini ...."); } } }
5. Buat class Main.java
package main; public class Main { public static void main(String[] args){ System.out.println("Ketika username dan password yang kamu inputkan benar : "); User user = new User("leman","password"); FolderFroxy folderFroxy = new FolderFroxy(user); folderFroxy.performOperations(); System.out.println(); System.out.println("Ketika username atau password yang kamu inputkan salah :"); User user2 = new User("abcd","abcd"); FolderFroxy folderFroxy2 = new FolderFroxy(user2); folderFroxy2.performOperations(); } }
6. Verifikasi Output :
Ketika username dan password yang kamu inputkan benar : Kamu sekarang sedang mengakses folder .... Ketika username atau password yang kamu inputkan salah : Kamu tidak diberi ijin untuk mengakses folder ini ....
Contoh Kedua :
1. Buat interface Image.java
package main; public interface Image { void dispalay(); }
2. Buat class ProxyImage.java implements ke Image.java
package main; public class ProxyImage implements Image{ private RealImage realimage; private String fileName; public ProxyImage(String fileName){ this.fileName = fileName; } @Override public void dispalay() { if(realimage == null){ realimage = new RealImage(fileName); } realimage.dispalay(); } }
3. Buat class RealImage.java implements Image.java
package main; public class RealImage implements Image { private String fileName; public RealImage(String fileName){ this.fileName = fileName; loadFromDisk(fileName); } @Override public void dispalay() { System.out.println("Menampilkan "+fileName); } private void loadFromDisk(String fileName){ System.out.println("Loading "+fileName); } }
4. Buat class Test.java
package main; public class Test { public static void main(String[] args){ Image image = new RealImage("image_test.jpg"); //Image dibuka dari disk image.dispalay(); System.out.println(""); //image bukan dibuka dari disk image.dispalay(); } }
5. Verifikasi Output :
Loading image_test.jpg Menampilkan image_test.jpg Menampilkan image_test.jpg
DOWNLOAD Sample Project
Baca Juga :
Entri Sebelumnya :
Java Flyweight Pattern
Sumber :
wikipedia.com
tutorialpoint.com
java2blog.com
No comments:
Post a Comment