আমাদের কথা খুঁজে নিন

   

Visitor Design pattern এর সাহায্যে hierarchical object structure কে traverse করা

ঈদের বাসি মুবারক :)

টারগেট রিডার : জাবা ডেভলপার, যারা 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) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।