কীভাবে "অন্তর্নিহিত" ইন্টারফেসগুলির সাথে উত্পাদনশীলতা উন্নত হয় এবং কীভাবে এটি এক্সটেনশন পদ্ধতির সি # এর ধারণার সাথে তুলনা করে?


21

গো ল্যাঙ্গুয়েজ টিউটোরিয়ালে, তারা ব্যাখ্যা করে যে ইন্টারফেসগুলি কীভাবে কাজ করে:

গো ক্লাস নেই। তবে, আপনি স্ট্রাক্টের ধরণের পদ্ধতিগুলি নির্ধারণ করতে পারেন। পদ্ধতি রিসিভার func শব্দ এবং পদ্ধতি নাম মধ্যে নিজস্ব যুক্তি তালিকা প্রদর্শিত হবে।

type Vertex struct {
    X, Y float64
}

func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

একটি ইন্টারফেস টাইপ পদ্ধতির একটি সেট দ্বারা সংজ্ঞায়িত করা হয়। ইন্টারফেস প্রকারের মান এমন কোনও মান ধরে রাখতে পারে যা এই পদ্ধতিগুলি প্রয়োগ করে।

গোয়ে ইন্টারফেস তৈরির একমাত্র উপায় এটি। গুগল আরও ব্যাখ্যা করে যে:

একটি পদ্ধতি পদ্ধতি প্রয়োগ করে একটি ইন্টারফেস প্রয়োগ করে। অভিপ্রায় (অর্থাত্ interfaceঘোষণা) এর স্পষ্ট ঘোষণা নেই ।

অন্তর্নির্মিত ইন্টারফেসগুলি ইন্টারফেসগুলি সংজ্ঞায়িত করে এমন প্যাকেজগুলি থেকে বাস্তবায়ন প্যাকেজগুলি ডিকুয়াল করে: অন্যটির উপরও নির্ভর করে না।

এটি সুনির্দিষ্ট ইন্টারফেসগুলির সংজ্ঞাটিকেও উত্সাহিত করে, কারণ আপনাকে প্রতিটি বাস্তবায়ন খুঁজে পেতে এবং নতুন ইন্টারফেসের নাম দিয়ে এটি ট্যাগ করতে হবে না।

এই সমস্ত সন্দেহজনকভাবে সি # তে এক্সটেনশন পদ্ধতিগুলির মতো শোনাচ্ছে , গোতে থাকা পদ্ধতিগুলি নির্মমভাবে বহুরূপী হিসাবে ব্যতীত; তারা প্রয়োগ করে যে কোনও প্রকারে operate

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



1
এই গো ইন্টারফেসগুলি সি # এক্সটেনশন পদ্ধতির চেয়ে সি ++ টেমপ্লেটগুলি কী করতে পারে তার মতো আরও শোনায়। সি # তে "A এবং B পদ্ধতি প্রয়োগ করে এমন কোনও ধরণের" মতো কিছুই নেই তবে আপনি সি ++ টেম্পলেট ব্যবহার করে এটি করতে পারেন।
এসভিক


'অন্তর্নিহিত ইন্টারফেস' কি ঠিক হাঁসের টাইপের টাইপ নয়?
অ্যালন গুরালেনেক

"'অন্তর্নিহিত ইন্টারফেস' কি ঠিক হাঁসের টাইপের টাইপ নয়?" গো এর ইন্টারফেসগুলি স্ট্রাকচারাল টাইপিংয়ের একটি উদাহরণ। খুব অনুরূপ ধারণা।
মর্টিয়াস

উত্তর:


12

আমি এক্সটেনশন পদ্ধতি এবং অন্তর্নিহিত ইন্টারফেসগুলিকে মোটেও দেখতে পাই না।

প্রথমে উদ্দেশ্য কথা বলি।

এক্সটেনশন পদ্ধতিগুলি সিনট্যাকটিক চিনির হিসাবে বিশেষত আপনাকে কোনও পদ্ধতির ব্যবহারের সক্ষমতা দিতে বিশেষভাবে এটি অবজেক্টের অভ্যন্তরীণ অ্যাক্সেস না করেই কোনও বস্তুর সদস্য exist এক্সটেনশন পদ্ধতি ছাড়াই আপনি ঠিক একই জিনিসটি করতে পারেন, আপনি কেবল এর মনোরম সিনট্যাক্স পান না someObjectYouCantChange.YourMethod()এবং কল করতে হবে না YourMethod(someObjectYouCantChange)

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

এখন পরিণতিতে কথা বলি।

প্রসারণ পদ্ধতিগুলির সত্যই কোনও নেই, এটি নির্মম সুরক্ষার সীমাবদ্ধতার সাথে পুরোপুরি সঙ্গতিপূর্ণ। ফলাফলটি কেবল কিছু সিনট্যাকটিক সুখের।

অন্তর্নিহিত ইন্টারফেসের পরিণতিগুলি কয়েকটি জিনিস।

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

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

@ রবার্টহারভে এটি ইন্টারফেসে পদ্ধতি রাখার দাবি করা যথাযথভাবে সঠিক নয়, একটি ইন্টারফেসে একটি প্রকৃত পদ্ধতি এবং একটি এক্সটেনশন পদ্ধতির মধ্যে পার্থক্যটি নোট করুন: একটি ইন্টারফেসের একটি পদ্ধতি শ্রেণীর অভ্যন্তরে প্রয়োগ করা হবে যা সেই ইন্টারফেসটি প্রয়োগ করে, এবং তাই কোনও এক্সটেনশন পদ্ধতির চেয়ে অনেক বেশি পরিমাণে অ্যাক্সেসের সুযোগ রয়েছে। আবার এটি দৃষ্টিভঙ্গির পরিবর্তন, শ্রেণীর ভিতরে প্রয়োগ করা কোডটিকে বাইরের তুলনায় বিশেষ দৃষ্টিকোণ দেওয়া হয়।
জিমি হোফা 14
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.