জাভাতে কনজিউমার ইন্টারফেস কীভাবে ব্যবহার করবেন?

Jabhate Kanaji Umara Intaraphesa Kibhabe Byabahara Karabena



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

জাভাতে কনজিউমার ইন্টারফেস কীভাবে ব্যবহার করবেন?

দ্য ' ভোক্তা ” ইন্টারফেস এনক্যাপসুলেশন বা আচরণ অফার করে যা চারপাশে পাস করা যায় এবং প্রোগ্রামের বিভিন্ন অবস্থানে কার্যকর করা যায়। এটি পুনঃব্যবহারযোগ্য আচরণকে প্রচার করে যা নকল কোড ছাড়াই বিভিন্ন ইনপুটে প্রয়োগ করা যেতে পারে। কনজিউমার ইন্টারফেস দুটি পদ্ধতি নিয়ে গঠিত যেমন “ এবং তারপর() ' এবং ' গ্রহণ করুন()







কোডেক উদাহরণ সহ উভয় ফাংশন বোঝার জন্য নীচের উদাহরণগুলি দেখুন:



উদাহরণ 1: 'andThen()' পদ্ধতির ব্যবহার



বিকাশকারী একাধিক চেইন করতে পারে ' ভোক্তা 'ব্যবহার করে সম্পূর্ণভাবে অপারেশন এবং তারপর() 'পদ্ধতি। এটি একটি নতুন ফেরত দেয় ' ভোক্তা 'যা বর্তমানের অপারেশন সঞ্চালন করে' ভোক্তা ' দৃষ্টান্ত. এর পরে, আসন্ন/পরবর্তী ক্রিয়াকলাপগুলি পূরণ করে “ ভোক্তা ' দৃষ্টান্ত. এটি একটি ডিফল্ট পদ্ধতি যা 'প্রক্রিয়ার জন্য ব্যাপকভাবে ব্যবহৃত হয়' গঠন





এর জন্য সিনট্যাক্স ' এবং তারপর() 'পদ্ধতি নীচে ঢোকানো হয়:

এবং তারপর ( ভোক্তা < ? সুপার টি > পরে )



দ্য ' এবং তারপর() 'পদ্ধতি বর্তমান ভোক্তাকে একত্রিত করে' সুপার 'অন্য ভোক্তার সাথে' পরে ” এবং এটি প্রথমে বর্তমান ভোক্তার ক্রিয়াকলাপ সম্পাদন করে, তারপরে প্রদত্ত ভোক্তার ক্রিয়াকলাপ।

আরও ভালোভাবে বোঝার জন্য আমাদের একটি প্রোগ্রামের মাধ্যমে চলুন:

java.util.ArrayList আমদানি করুন;
java.util.LinkedList আমদানি করুন;
java.util.List আমদানি করুন;
java.util.function.Consumer আমদানি করুন;

পাবলিক ক্লাস রুট {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং আর্গস [ ] )
{
// প্রধান পদ্ধতির সৃষ্টি
ভোক্তা < তালিকা < পূর্ণসংখ্যা > > multiply = dataEle - >
{
জন্য ( int j = 0 ; j < dataEle.size ( ) ; j++ ) {
dataEle.set ( জে, 5 * dataEle.get ( j ) ) ;
}
} ;
// পূর্ণসংখ্যার একটি তালিকা প্রদর্শনের জন্য ভোক্তা
ভোক্তা < তালিকা < পূর্ণসংখ্যা > >
প্রিন্ট = dataEle - > dataEle.stream ( ) .প্রতিটির জন্য ( k - > সিস্টেম.আউট.প্রিন্ট ( k+ '' ) ) ;

তালিকা < পূর্ণসংখ্যা > dataEle = নতুন অ্যারেলিস্ট < পূর্ণসংখ্যা > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
multiply.and তারপর ( প্রিন্ট ) স্বীকার করুন ( dataEle ) ;
}
}

উপরের কোডের ব্যাখ্যা:

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

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

স্ন্যাপশট দেখায় যে গুণনের কাজটি ' ব্যবহার করে সম্পন্ন হয়েছে এবং তারপর() 'এর পদ্ধতি' ভোক্তা ' ইন্টারফেস.

উদাহরণ 2: 'স্বীকার ()' পদ্ধতির ব্যবহার

দ্য ' গ্রহণ করুন() 'পদ্ধতি হল একটি কার্যকরী পদ্ধতি' ভোক্তা ' ইন্টারফেস. এটি টাইপের একটি একক যুক্তি গ্রহণ করে ' টি এবং এটিতে নির্দিষ্ট/প্রয়োজনীয় ক্রিয়াকলাপ সম্পাদন করে। মুল্য ' খালি 'এটি প্রদান করা উচিত নয় কারণ এটি গ্রহণ করে না' খালি ” মান এবং একটি ব্যতিক্রম তৈরি করুন।

এর সিনট্যাক্স নীচে দেওয়া হল:

অকার্যকর গ্রহণ ( < শক্তিশালী > টি শক্তিশালী > t )

উপরের সিনট্যাক্সে, ' t ” হল একক যুক্তি যার ভিত্তিতে নির্দিষ্ট ক্রিয়াকলাপগুলি পরিচালিত হয়৷

আরও ভাল বোঝার জন্য আমাদের নীচের কোড ব্লক পরিদর্শন করা যাক:

java.util.ArrayList আমদানি করুন;
java.util.LinkedList আমদানি করুন;
java.util.List আমদানি করুন;
java.util.function.Consumer আমদানি করুন;

// ইউটিলিটি আমদানি ভিতরে জাভা ফাইল
পাবলিক ক্লাস রুট {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং আর্গস [ ] ) // প্রধান পদ্ধতির সৃষ্টি
{
ভোক্তা < পূর্ণসংখ্যা > disp = k - > System.out.println ( k ) ;
disp.accept ( 255 ) ;
ভোক্তা < তালিকা < পূর্ণসংখ্যা > > multiply = dataEle - >
{
জন্য ( int k = 0 ; k < dataEle.size ( ) ; k++ )
dataEle.set ( k, 5 * dataEle.get ( k ) ) ;
} ;

ভোক্তা < তালিকা < পূর্ণসংখ্যা > >
প্রিন্ট = dataEle - > dataEle.stream ( ) .প্রতিটির জন্য ( j - > সিস্টেম.আউট.প্রিন্ট ( j + '
'
) ) ;
তালিকা < পূর্ণসংখ্যা > dataEle = নতুন অ্যারেলিস্ট < পূর্ণসংখ্যা > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// গ্রহণ ব্যবহার করে সংশোধন বাস্তবায়ন করুন ( )
multiply.accept ( dataEle ) ;
// গ্রহণ ব্যবহার করে dispList প্রয়োগ করুন ( )
prints.accept ( dataEle ) ;
}
}

উপরের কোডের ব্যাখ্যা:

  • প্রথমত, ' ভোক্তা ইন্টারফেসের নাম ' disp ” তৈরি করা হয়েছে যা কনসোলে প্রদত্ত পরামিতি প্রদর্শন করে, কোনো অপারেশন না করেই।
  • এখন ' গ্রহণ করুন() 'পদ্ধতি বলা হয় ' disp 'ভোক্তা, এবং এর মান' 255 ” এই পদ্ধতিতে পাস করা হয়।
  • পরবর্তী, আরেকটি ' ভোক্তা ইন্টারফেস তৈরি করা হয় যা ব্যবহার করে জন্য '' নামের ArrayList-এর প্রতিটি আবাসিক উপাদানে গুণ প্রয়োগ করতে লুপ dataEle
  • এর পরে, আরও একটি তৈরি করুন ' ভোক্তা ' প্রদর্শনের জন্য ইন্টারফেস ' dataEle ” উপাদানগুলি স্ট্রীম থেকে আসা গুণ প্রয়োগ করার পরে ফলাফল।
  • এর পরে, ArrayList শুরু করুন ' dataEle 'ডামি ডেটা উপাদান সহ এবং ব্যবহার করুন' গ্রহণ করুন() 'সহ পদ্ধতি' গুণ ' ইন্টারফেস.
  • শেষ পর্যন্ত, কল করুন ' গ্রহণ করুন() 'পদ্ধতি ব্যবহার করে' প্রিন্ট ” কনসোল লগে গুন প্রয়োগ করার পর ফলাফল প্রদর্শন করতে ইন্টারফেস।

মৃত্যুদন্ড শেষ হওয়ার পরে:

উপরের স্ন্যাপশটটি দেখায় যে একাধিক ভোক্তা ইন্টারফেসকে একবারে কল করা হয়েছে ' গ্রহণ করুন() 'পদ্ধতি।

উদাহরণ 3: আফটার ফাংশনের জন্য ব্যতিক্রম হ্যান্ডলিং

ব্যতিক্রম দেখা দেয় যখন ' পরে 'এর কাজ' এবং তারপর() ' পদ্ধতিতে একটি ' গ্রহণ করুন() 'পদ্ধতি। এটি একটি ইন্টারফেস তৈরি করে যা নীচে দেখানো হিসাবে কনজিউমার ইন্টারফেস পদ্ধতি ব্যবহার করে ইন্টারফেস দ্বারা প্রক্রিয়াকরণের জন্য ডেটা ধারণ করে:

java.util.ArrayList আমদানি করুন;
java.util.LinkedList আমদানি করুন;
java.util.List আমদানি করুন;
java.util.function.Consumer আমদানি করুন;

পাবলিক ক্লাস রুট {
পাবলিক স্ট্যাটিক অকার্যকর প্রধান ( স্ট্রিং আর্গস [ ] )
{
ভোক্তা < তালিকা < পূর্ণসংখ্যা > > গুণ = dataEle - >
{
জন্য ( int j = 0 ; j < = dataEle.size ( ) ; j++ )
dataEle.set ( জে, 5 * dataEle.get ( j ) ) ;
} ;
// পূর্ণসংখ্যার একটি তালিকা প্রদর্শনের জন্য ভোক্তা
ভোক্তা < তালিকা < পূর্ণসংখ্যা > >
ছাপা = dataEle - > dataEle.stream ( ) .প্রতিটির জন্য ( আমি - > সিস্টেম.আউট.প্রিন্ট ( i+ '' ) ) ;
তালিকা < পূর্ণসংখ্যা > dataEle = নতুন অ্যারেলিস্ট < পূর্ণসংখ্যা > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
চেষ্টা করুন {
প্রিন্ট এবং তারপর ( গুণ ) স্বীকার করুন ( dataEle ) ;
}
ধরা ( ব্যতিক্রম ঙ ) {
System.out.println ( 'ব্যতিক্রম:' + এবং ) ;
}
}
}

উপরের কোড ব্লকের ব্যাখ্যা:

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

মৃত্যুদন্ডের পর্ব শেষ হওয়ার পরে:

স্ন্যাপশট দেখায় যে কম্পাইলার দ্বারা IndexOutOfBoundsException তৈরি করা হয়েছে।

উপসংহার

দ্য ' ভোক্তা ” ইন্টারফেস পুনঃব্যবহারযোগ্য আচরণ সংজ্ঞায়িত করার একটি উপায় প্রদান করে এবং ফলাফল না ফিরিয়ে ইনপুট ডেটাতে ক্রিয়া সম্পাদন করে। ইহা গঠিত ' গ্রহণ করুন() ' এবং ' এবং তারপর() 'পদ্ধতি। এটি প্রায়শই ডেটা প্রসেসিং কাজের জন্য ব্যবহার করা হয়, যেখানে ব্যবহারকারীদের একটি সংগ্রহ বা স্ট্রিমের প্রতিটি উপাদানের উপর একটি ক্রিয়া সম্পাদন করতে হবে। এটি জাভাতে কনজিউমার ইন্টারফেসের ব্যবহার এবং বাস্তবায়ন সম্পর্কে।