রুবিতে (বা অন্য কোনও গতিশীল ভাষা) ইন্টারফেসের পরিবর্তে আমি কী ব্যবহার করতে পারি?


9

আমার লক্ষ্য ক্লাসগুলির মধ্যে চুক্তিগুলি সংজ্ঞায়িত করা।

আমি হাঁসের টাইপিং এবং সমস্ত পছন্দ করি তবে আমি আমার অ্যাপ্লিকেশনটির বিভিন্ন স্তরের মধ্যে একটি ইন্টারফেসও স্পষ্টভাবে সংজ্ঞায়িত করতে চাই যে বাহ্যিক থেকে কল করার পদ্ধতিটি কোনটি এবং আনুষঙ্গিক পদ্ধতিগুলি যা অন্য স্তর দ্বারা ব্যবহার করা উচিত নয় ।

জাভাতে উদাহরণস্বরূপ আমি get () এবং সেভ () সংরক্ষণের মতো পদ্ধতির সাথে পার্সিস্টর ইন্টারফেসটি সংজ্ঞায়িত করতে পারি এবং তারপরে ডাটাবেসে অবিচ্ছিন্ন থাকা আমার প্রয়োজনীয় সমস্ত পদ্ধতির সাথে একটি JdbcPersistor শ্রেণি সংজ্ঞায়িত করতে পারি। এবং রিমোট রিসরভারে সঞ্চয় করার জন্য অন্যান্য পদ্ধতির সাথে অন্য একটি রেস্টপ্রেসিস্টর।

আমি রুবিতে ইন্টারফেসের জন্য বলছি না, কেবল একটি পরিষ্কার উপায় আছে কিনা তা জানতে এই পার্থক্যটি রাখুন। আমি রুবি পছন্দ করি তবে আমি এটির সাথে শুধুমাত্র ছোট প্রকল্পগুলিতে কাজ করেছি।


আমি মনে করি এটি স্ট্যাক ওভারফ্লোতে অন্তর্গত ...
থারস্টেন মুলার

2
@ থারস্টেন স্ট্যাক ওভারফ্লো নির্দিষ্ট প্রয়োগের সমস্যার জন্য (যেমন কোডে সমস্যা আছে) for সাধারণ প্রোগ্রাম ডিজাইন প্রশ্নাগুলি এখানে প্রোগ্রামারস.এসই-তে বিষয়বস্তু রয়েছে।

@ মার্ক: সংশোধন করার জন্য ধন্যবাদ। আমি ভেবেছিলাম এটি রুবি সম্পর্কে খুব নির্দিষ্ট (এবং উবার্তোর শেষ বাক্যটি মিস করেছেন)। তাই আমি প্রায়শই আমার জ্ঞান আপডেট করেছি। (এখনও এখানে আমার পথ সন্ধান করছেন)
থারস্টেন মোলার

+1 দুর্দান্ত প্রশ্ন। আমি আগ্রহী যদি ডকুমেন্টেশন টন লিখে, পড়তে এবং আপ টু ডেট রাখার জন্য বা কিছু বোকা কনভেনশন যেমন অভ্যন্তরীণ আনুষঙ্গিক পদ্ধতিগুলির পূর্ববর্তী বা আন্ডারস্কোর বা এর মতো কিছু ব্যবহার করার মতো ব্যবহার না করে।
জুনাস পুলক্কা

+1 যাইহোক, পিএলটি র‌্যাকেটের চুক্তির জন্য সমর্থন রয়েছে, এবং গতিশীল। রুবির সাথে অনুরূপ কিছু যুক্ত করা একটি আকর্ষণীয় প্রকল্প হবে।
ল্যারি কোলম্যান

উত্তর:


5

এটি স্টেকওভারফ্লোতে সি # ইন্টারফেস এবং রুবির প্রসঙ্গে জবাব দেওয়া হয়েছিল: /programming/3505521/in-ruby- কি-is-tue-equivalent-to-an-interface-in-c ।

সংক্ষিপ্ত বিবরণ: রুবিতে কোনও সঠিক সমতুল্য নেই যেহেতু হাঁসের টাইপিং একটি প্রথাগত ইন্টারফেসকে অপ্রয়োজনীয় করে তোলে। পরিবর্তে, একটি "ইন্টারফেস" বা ব্যবহারের চুক্তির সম্মতি জন্য পরীক্ষা বিবেচনা করুন respond_to?


2
হ্যাঁ তবে এটি কোডটি অ্যাক্সেস করার কোডটি প্রতিরোধ করছে না
উবার্তো

2

কিছু গতিশীল টাইপযুক্ত ভাষার ইন্টারফেস বা অনুরূপ ধারণা রয়েছে। উদাহরণস্বরূপ, অবজেক্টিভ-সিতে প্রোটোকল রয়েছে। তবে বেশিরভাগ না। একটি গতিশীল ভাষায় কার্যকর হতে, আপনি স্ট্যাটিকালি টাইপ করা ভাষা সম্পর্কে যা জানেন তা ভুলে যেতে হবে, ভাষার গতিশীল প্রকৃতিটি আলিঙ্গন করতে হবে। সচলভাবে টাইপ করা ভাষা সাধারণত ইন্টারফেসের ব্যবহারকে রোধ করে।


1

পার্ল 5-এ, মুজ এবং মূ উভয়েই এমন ভূমিকা (বা বৈশিষ্ট্য) সরবরাহ করে যা নির্দিষ্ট পদ্ধতির প্রয়োগের প্রয়োজন হতে পারে। মুজটি রানটাইম টাইপ সিস্টেমের সাথে আসে যা আপনাকে একটি সংজ্ঞায়িত করতে দেয় duck_typeযা প্রয়োজনীয় ধরণের পদ্ধতির সংজ্ঞাযুক্ত একটি ধরণের বিষয় ঘোষণা করে।

ভূমিকা ক্লাসগুলি (বা অন্যান্য ভূমিকা) দ্বারা নিজেরাই প্রয়োগ করা হয় এবং কেবল ইন্টারফেসই নয় বাস্তবায়ন এবং আচরণ সরবরাহ করে। তবে তারা (অন্তত মূজে) পদ্ধতি দ্বন্দ্ব সনাক্তকরণের মতো জিনিসগুলিও পরিচালনা করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.