অবজেক্ট রূপান্তরকরণের জন্য নকশার প্যাটার্ন (জাভা)


21

আমি মাঝে মাঝে কারখানার এবং এমভিসি ছাড়াও ডিজাইনের নিদর্শনগুলি প্রায়শই ব্যবহার করি না এবং আমি সেগুলি আরও ব্যবহার শুরু করতে চাই।

আমার হাতে একটি কংক্রিট কেস রয়েছে যা আমি এই ক্ষেত্রে ডিজাইনের ধরণগুলির ব্যবহার সম্পর্কে আপনার মতামতটি চাই।

আমার অ্যাপ্লিকেশনটিতে আমাকে প্রায়শই বিভিন্ন পরিস্থিতিতে বিভিন্ন সময়ে রূপান্তর করতে হয়। আমাকে একটি হাইবারনেট পোজোকে একটি ডিটিওতে রূপান্তর করতে হতে পারে, কারণ আমি জিডব্লিউটি এবং হাইবারনেট পোজো ব্যবহার করি সিরিয়ালযোগ্য নয় এবং লাইনের মাধ্যমে প্রেরণ করা যায় না।

অন্য পরিস্থিতিতে আমার সলারের দ্বারা সূচীকরণের জন্য জাভা অবজেক্টগুলিকে সোলারইনপুট ডকুমেন্টে রূপান্তর করতে পারে।

আমি এটির জন্য আমার কোনও ডিজাইনের ধরণ ব্যবহার করা উচিত কিনা তা জানতে চাই। দেখে মনে হচ্ছে যে "অবজেক্ট রূপান্তর" একটি জেনেরিক কাজ যা একটি প্যাটার্ন দ্বারা নমনীয় / বিমূর্ত পদ্ধতিতে পরিচালনা করা যেতে পারে, তবে আমি কীভাবে সত্য তা দেখতে পাচ্ছি না।

নিদর্শন ছাড়াই আমি কেবলমাত্র প্রতিটি ধরণের রূপান্তরকরণের জন্য একটি পৃথক শ্রেণি তৈরি করব, উদাহরণস্বরূপ কোর্সটোসোলারআইপুট ডকুমেন্ট (কোর্সটি আমার আবেদনের একটি হাইবারনেট সত্তা)। অথবা কোর্সটোসকোর্সডিটিও। এই রূপান্তর শ্রেণীর প্রত্যেকটির কাছে একটি একক স্থিতিশীল পদ্ধতি থাকতে পারে convert()যা উত্স অবজেক্টটিকে ইনপুট হিসাবে গ্রহণ করে এবং আউটপুট অবজেক্টকে ফেরত দেয়।

কিন্তু এটি আসলে কোনও প্যাটার্ন নয়, তাই না? সুতরাং আমি জেনেরিক দিয়ে কিছু শুরু করেছি এবং এই বর্গ তৈরি করেছি যা রূপান্তরকারী ইন্টারফেস প্রয়োগ করে। তবে কী একরকম অনুভূত হয় যে জেনেরিক ইন্টারফেস তৈরি করে এবং আমি জেনেরিক ব্যবহারের জন্য নিজেকে অভিনন্দন জানাতে সক্ষম হওয়া ছাড়া আর কোনও সুবিধা দেখতে পাচ্ছি না।

public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument>         {
    @Override
    public void convert(Course source, SolrInputDocument destination) {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}

সুতরাং, এখানে আসল প্রশ্নটি হ'ল: এমন কোনও প্যাটার্ন রয়েছে যা জেনেরিক অবজেক্ট রূপান্তরকে প্রযোজ্য এবং, আপনার দৃষ্টিভঙ্গিটি কী হবে এবং কেবলমাত্র ক্লাস-প্রতি-রূপান্তর ধরণের পদ্ধতির ব্যবহারের সুবিধাগুলি কী?


প্যাটার্নগুলি আপনি যা করেন তার জন্য আরও বেশি নাম (এবং উদাহরণস্বরূপ কীভাবে এটি সঠিকভাবে করা যায়) ব্যবহার করার চেয়ে দারুণ কিছু than আমি কীভাবে আরও নিদর্শনগুলি ব্যবহার করতে পারি তার চেয়ে আরও ভাল প্রশ্ন হ'ল: আমি ইতিমধ্যে কী প্যাটারগুলি ব্যবহার করছি (সম্ভবত কিছু অসম্পূর্ণ / বিভ্রান্তিকর উপায়ে)।
user470365

উত্তর:


18

অনুবাদক প্যাটার্ন আপনি যা বলছি হয়।

তবে আমি সন্দেহ করি আপনি যা খুঁজছেন তা একটি কাঠামো, একটি নিদর্শনের চেয়েও বেশি। আমি বিশ্বাস করি যে ডোজার জাভা বিশ্বে জনপ্রিয়।


আমি ডোজার এবং অ্যাপাচি বিয়ান্টিলস জানি। আমি আমার "রূপান্তর কাঠামো" এর মধ্যে থাকা একটির ব্যবহার করতে চাই। আমি এরই মধ্যে খুঁজে পেয়েছি যে স্প্রিং এখানে পাওয়া যায় এমন বস্তুগুলিকে রূপান্তর করার জন্য একটি সমাধান প্রস্তাব করে: স্ট্যাটিক.স্প্রিংসোর্স.আর / স্প্রিং / ডকস / ৩.০.০ . আরসি 3 / রেফারেন্স / html/… । আমি এটি আগেও দেখেছি, তবে অনেক দিন আগে, তাই আমার নিজের ইন্টারফেসটি স্প্রিংয়ের থেকে যা মনে পড়েছিল তার উপর ভিত্তি করে। আমি বসন্তের সমাধান নিয়ে যাচ্ছি, কারণ স্প্রিং আমার প্রকল্পে ইতিমধ্যে রয়েছে এবং এটি একটি ভাল পদ্ধতির মত দেখাচ্ছে।
জুলিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.