ঈদের বাসি মুবারক :)
টারগেট রিডার : জাবা ডেভলপার,
যারা visitor design pattern সম্পকে জানেন না তাদের জন্য এই লেখা ।
visitor pattern ব্যবহার হয় object structure কে traverse করার লজিক কে আবজেক্ট এর ভিতর encapsulate করার জন্য, যার ফলে এ পি আই ব্যবহার কারি কে জানতে হবে না কিভাবে একটা object structure কে traverse করতে হয়. এই প্যটারন টা সাহায্য করবে traverse সম্পর্কিত concern আলাদা করতে ।
দরুন আপনি নিচের ক্লাস টা ব্যবহার করছেন :
class Tree {
private List mBranches;
public List getBranches() {
return mBranches;
}
}
সাধারন্ত আপনি নিচের কোড গুলো লিখে এই ট্রি থেকে ব্রান্চ গুলো iterate করে থাকেন :
// ....
final List branches = tree.getBranches();
for (final Branch branch : branches) {
// ...
}
// ...
কিন্তু visitor pattern গুরুত্ব দেয় API designer কে অভন্তরীন object structure এবং iterating লজিক কে গোপন রাখতে ।
ত দেখুন এটা কিভাবে কাজ করে :
interface Visitor {
void visit(final Branch pBranch);
}
interface Visitable {
void accept(final Visitor pVisitor);
}
class Tree implements Visitable {
// ... previous code
public void visit(final Visitor pVisitor) {
for (final Branch branch : mBranches) {
pVisitor.visit(branch);
}
}
}
এখনে আমার আসল উদেশ্য হল আমি visitor কে ট্রির ডাল পালা সহ "n" depth পর্যন্ত traverse করতে দিব ।
আমার কিছু পরিবর্তিত ইন্টারফেস টা হল :
interface Visitor {
void visit(final int pDepth, final TreeItem pItem);
}
interface Visitable {
void accept(final Visitor pVisitor);
}
আমাদের ট্রি :
class Tree implements Visitable {
private TreeItem mRootItem;
// ... setter getter
class TreeItem {
private String name;
// .. Setter getter
private List
mTreeItems;
// .. Setter getter
}
public void accept(final Visitor pVisitor) {
visitRecursivlyTreeItem(0, pVisitor, mRootItem);
}
private visitRecursivlyTreeItem(int pLevel, final Visitor pVisitor, final TreeItem pItem) {
pVisitor.visit(pLevel, pItem);
for (final TreeItem item : pVisitor.getTreeItems()) {
visitRecursivlyTreeItem(pLevel + 1, pVisitor, pItem);
}
}
}
আজ এই পর্যন্ত
অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।