ডিজাইনের দিক থেকে স্টাইল এবং মডিফায়ারের মধ্যে পার্থক্য রয়েছে। স্টাইলগুলি মডিফায়ারগুলিকে প্রতিস্থাপন করে না; পরিবর্তে, দুটি সিস্টেমের লক্ষ্য ভিন্ন। অভ্যন্তরীণভাবে, একটি স্টাইল হল একটি মডিফায়ার। আপনি মডিফায়ার দিয়ে স্টাইল যা করতে পারে তা করতে পারেন, তবে মডিফায়ারের সমস্ত কার্যকারিতা স্টাইলে উপলব্ধ নয়।
স্টাইল বনাম মডিফায়ারের মধ্যে তুলনা নিচে দেওয়া হল:
| বৈশিষ্ট্য | সংশোধক | স্টাইল |
|---|---|---|
| প্রাথমিক লক্ষ্য | আচরণ, শব্দার্থবিদ্যা এবং জটিল বিন্যাস সংজ্ঞায়িত করুন। সংশোধকরা একটি নির্দিষ্ট রচনার জন্য পৃথক উপাদানগুলিকে তাৎক্ষণিকভাবে কাজে লাগায় এবং থিম থেকে সরে যায় না। | ভিজ্যুয়াল চেহারা, পৃথক আইটেমের আকার এবং থিমযোগ্য বৈশিষ্ট্য নির্ধারণ করুন। স্টাইলগুলি একটি থিম স্তরে কাজ করে এবং একটি উপাদান স্তরে অতিরিক্ত লেখা যায়। এগুলি ট্রিক ডাউন করে এবং বিভিন্ন কম্পোজেবল জুড়ে স্টাইলিং প্রয়োগ করে। |
| যুক্তিবিদ্যা | যোজক - সংশোধকগুলি একত্রিত হয়ে একটি নতুন ফলাফল তৈরি করে। | ওভার-রাইটেবল - স্টাইলের শেষ প্রপার্টি সেটটি জিতে যায়। স্টাইলগুলি প্রোপার্টির একক স্তর হিসেবে কাজ করে যা একটি নির্ধারিত অগ্রাধিকার শ্রেণিবিন্যাসের উপর ভিত্তি করে একে অপরকে ওভাররাইড করে। |
| থিমিং | সাধারণত পৃথকভাবে ব্যবহৃত একটি থিমে তুলে ধরা কঠিন। | ডিজাইন অনুসারে, স্টাইলগুলি থিমযোগ্য (তারা CompositionLocal গুলি অ্যাক্সেস করতে পারে) এবং একবার সংজ্ঞায়িত করা যেতে পারে এবং বিভিন্ন উপাদান জুড়ে ব্যবহার করা যেতে পারে। |
| কর্মক্ষমতা | আপডেটের জন্য প্রায়শই কম্পোজের তিনটি ধাপের প্রয়োজন হয়: রচনা, বিন্যাস এবং অঙ্কন। মডিফায়ারের ভালো অ্যানিমেশন পারফরম্যান্স অর্জনের জন্য প্রায়শই ল্যাম্বডা-ভিত্তিক সংস্করণ লেখার প্রয়োজন হয়। | কম্পোজিশন ফেজ এড়িয়ে যায়, শুধুমাত্র লেআউট এবং ড্র ফেজে সক্রিয় থাকে, পুনর্গঠন হ্রাস করে। কম অবজেক্ট অ্যালোকেশন প্রয়োজন। |
| অ্যানিমেশন | animate*AsState মতো আলাদা অ্যানিমেশন প্রিমিটিভ ব্যবহার করা প্রয়োজন | বিল্ট-ইন animate { } API বৈশিষ্ট্য যা আপনার জন্য কিছু অ্যানিমেশন পরিচালনা করে। |
সংশোধকদের সীমাবদ্ধতা
বর্তমান কম্পোজের জগতে মডিফায়ারের অনেক সুবিধা রয়েছে। তবে, স্টাইলস মডিফায়ারের কিছু সীমাবদ্ধতা মোকাবেলা করে, যা নিম্নলিখিত তালিকায় বর্ণনা করা হয়েছে:
- সাধারণত কম্পোজিশন পর্বে মডিফায়ার তৈরি করা হয়। আপডেটগুলি কম্পোজিশন, লেআউট এবং ড্র সম্পূর্ণরূপে পুনরায় চালানোর জন্য বাধ্য করতে পারে, এমনকি রঙের মতো ছোট ভিজ্যুয়াল পরিবর্তনের জন্যও, যদি না আপনি ল্যাম্বডা-ভিত্তিক মডিফায়ার তৈরি করেন।
- শর্তসাপেক্ষ সংশোধকগুলির জন্য সাবলীল শৃঙ্খলের মধ্যে বিঘ্নকারী যদি-অন্য যুক্তি প্রয়োজন। এগুলিকে অ্যানিমেট করার জন্য ম্যানুয়াল স্টেট বয়লারপ্লেট প্রয়োজন এবং উচ্চ-কার্যক্ষমতাসম্পন্ন "অটো-অ্যানিমেট" প্রক্রিয়ার অভাব রয়েছে।
- মডিফায়ারগুলি প্রতিস্থাপনের পরিবর্তে স্ট্যাক করে। আপনি কোনও উপাদানের ডিফল্ট সীমানা ওভাররাইড করতে পারবেন না; আপনি কেবল উপরে দ্বিতীয়টি আঁকতে পারেন।
- মডিফায়ারগুলিকে বিশ্বব্যাপী থিমগুলিতে সারাংশ করা কঠিন। ফলস্বরূপ, থিমগুলি সাধারণত পুনঃব্যবহারযোগ্য মডিফায়ার কনফিগারেশনের পরিবর্তে কাঁচা মান সংরক্ষণ করে।
শৈলীর সীমাবদ্ধতা
যদিও স্টাইলগুলি মডিফায়ারদের কিছু শূন্যস্থান পূরণ করতে পারে, তাদের কিছু সীমাবদ্ধতাও রয়েছে, যা দেখায় যে তারা কীভাবে সম্পূর্ণরূপে মডিফায়ার প্রতিস্থাপন করতে পারে না:
- স্টাইল হলো বিশেষায়িত মডিফায়ার। যদিও একজন মডিফায়ার স্টাইল যা করে তা করতে পারে, বিপরীতটি সত্য নয়। ফলস্বরূপ, স্টাইলগুলি মডিফায়ারগুলিকে পরিপূরক করতে পারে, কিন্তু প্রতিস্থাপন করতে পারে না।
- স্টাইলগুলি ভিজ্যুয়াল কনফিগারেশনের (ব্যাকগ্রাউন্ড, প্যাডিং, বর্ডার) মধ্যে সীমাবদ্ধ। তারা ক্লিক লজিক, অঙ্গভঙ্গি সনাক্তকরণ, বা অ্যাক্সেসিবিলিটি সেমান্টিক্সের মতো আচরণ পরিচালনা করতে পারে না।
- একটি স্টাইলকে তার চূড়ান্ত অবস্থায় সমাধান করা একটি একক মডিফায়ার প্রয়োগ করার চেয়ে বেশি ব্যয়বহুল । সিস্টেমটিকে অবশ্যই সমস্ত সম্ভাব্য সম্পত্তির মান ধারণকারী একটি ডেটা স্ট্রাকচার তৈরি করতে হবে এবং উত্তরাধিকারসূত্রে প্রাপ্ত বৈশিষ্ট্যগুলির সন্ধান এটিকে আরও জটিল করে তোলে।
মডিফায়ারের উপর স্টাইল কখন ব্যবহার করবেন
যদিও Styles ব্যবহারের পছন্দ মূলত আপনার অ্যাপ এবং ব্যবহারের ক্ষেত্রের উপর নির্ভর করে, নিম্নলিখিত নির্দেশিকাগুলি কখন একটি মডিফায়ারের চেয়ে একটি স্টাইল পছন্দ করবেন তা নির্ধারণ করতে সহায়তা করে:
- থিম-ব্যাপী ধারাবাহিকতা অর্জনের জন্য: স্টাইলগুলিকে একটি বিশ্বব্যাপী থিমে "উত্তোলিত" করার জন্য ডিজাইন করা হয়েছে। প্রতিটি উপাদানে পুনরাবৃত্তিমূলক মডিফায়ার প্রেরণের পরিবর্তে, আপনি পুরো অ্যাপ জুড়ে একটি সমন্বিত চেহারা তৈরি করতে আপনার থিমে একটি একক স্টাইল সংজ্ঞায়িত করতে পারেন।
- ঘন ঘন অ্যানিমেশন করার সময়: স্টাইলগুলি লেআউট এবং ড্র পর্যায়ে মূল্যায়ন করে, রঙ বা স্কেলের মতো বৈশিষ্ট্যগুলিকে অ্যানিমেট করার অনুমতি দেয় যখন সম্পূর্ণরূপে কম্পোজিশন পর্যায়টি বাইপাস করে। এটি কর্মক্ষমতা ওভারহেড উল্লেখযোগ্যভাবে হ্রাস করে। ভিজ্যুয়াল প্রপার্টি অ্যানিমেশন করার সময় একটি মডিফায়ারের পরিবর্তে একটি স্টাইল ব্যবহার করুন।
- ওভাররাইডিং বনাম স্ট্যাকিং: যখন আপনার কোনও ডিফল্ট প্রোপার্টি প্রতিস্থাপন করার প্রয়োজন হয় তখন স্টাইল ব্যবহার করুন। মডিফায়ারগুলি হল অ্যাডিটিভ (একটি বর্ডার স্ট্যাক দ্বিতীয়টিতে যোগ করা), যেখানে স্টাইলগুলি "last-write-wins" লজিক ব্যবহার করে, যা ভিজ্যুয়াল ক্লাটার ছাড়াই ব্যাকগ্রাউন্ড বা প্যাডিং অদলবদল করা সহজ করে তোলে।
- উপাদান উপাদান কাস্টমাইজ করা: যদি কোনও উপাদান উপাদান একটি স্টাইল প্যারামিটার প্রদান করে, তবে এটি কাস্টমাইজেশনের জন্য প্রস্তাবিত পদ্ধতি। এই শৈলীগুলি আপনাকে কম্পোজেবলের অভ্যন্তরীণ কাঠামোর মধ্যে নির্দিষ্ট বৈশিষ্ট্যগুলি অ্যাক্সেস এবং সংশোধন করতে দেয় যা অন্যথায় অ্যাক্সেসযোগ্য হতে পারে।