গ্লোবালরা যদি তা বোঝায়?


10

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

আমি সম্পত্তি হিসাবে সুদের হার সহ একটি অবজেক্ট হিসাবে আমার "আর্থিক পরিবেশ" সজ্জিত করার আশা করছিলাম। তবে, ভাইবাল অবজেক্টসগুলির জন্য যেটির মান দরকার হয় তা এটি পেতে পারে না।

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


2
সুদের হার কি আপনার গণনার সময়কালের জন্য স্থির হয় বা আপনি কোনও সিমুলেশনের মতো কিছু করছেন যেখানে এটি টাইমস্টেপের মধ্যে পরিবর্তিত হতে পারে?
জেমস

এটি আরও একটি সিমুলেশনের মতো - এটি রান চলাকালীন পরিবর্তিত হতে পারে।
গ্রেগ

সেক্ষেত্রে প্রতিটি বিনিয়োগের জন্য কি সুদের হার বাঁচাতে সত্যিই দরকার হয় বা updateপ্রতিটি টাইমস্টেপে ডাকা কোনও ফাংশনের প্যারামিটারের মাধ্যমে এটি গ্রহণ করা যায়? আপনার সিমুলেশনটি কীভাবে চালিত হয় আপনি সিউডোকোডে পোস্ট করতে পারেন?
জেমস

3
আপনি একটি সঠিক ট্র্যাক, Singletonএটি ওও সিনট্যাকটিক চিনির সাথে একটি বিশ্বব্যাপী এবং এটি একটি ভয়ঙ্কর সমাধান যা আপনার কোডটিকে শক্তিশালী কিছু উপায়ের সাথে দৃly়ভাবে সংযুক্ত করে। আপনি যতক্ষণ না বুঝতে পারছেন ততক্ষণ এই নিবন্ধটি পড়ুন !

সুদের হার একটি টাইম সিরিজের মতো যা একটি ফাংশন যা DateTimeইনপুট হিসাবে গ্রহণ করে এবং একটি সংখ্যা আউটপুট হিসাবে দেয় return
rwong

উত্তর:


14

আমি একটি মান পেয়েছি যা অনেক বস্তুর প্রয়োজন।

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

তাহলে আমি কীভাবে আমার নকশাকে ওভার কাপলিং না করে অনেকগুলি অবজেক্টের মধ্যে মূল্যবোধ ভাগ করব?

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


17
ব্যতিক্রমী পরিস্থিতিতে সমস্যাটি হ'ল বাস্তব বিশ্বের সফ্টওয়্যারগুলিতে সেগুলি ব্যতিক্রমী নয়।
mattnz

আমি মনে করি এটি একটি গুরুতর ভুল বোঝাবুঝি। আমাদের অ্যালগরিদম একই সাথে বিভিন্ন প্রসঙ্গে রয়েছে। প্রথমটি হ'ল বৈশ্বিক প্রসঙ্গ। তারপরে অবজেক্ট ওরিয়েন্টেড ভাষার জন্য "এই" প্রসঙ্গটি দিন। একটি ওয়েব পরিষেবায় সেশনের প্রসঙ্গ, ডিবি পরিবেশে লেনদেনের প্রসঙ্গ, একজন গুইয়ের প্রধান উইন্ডো ... এবং এমন তথ্যগুলির টুকরা রয়েছে যা এই বিষয়গুলির সাথে সম্পর্কিত। তাদের অবশ্যই "আশেপাশে" থাকতে হবে এবং একই প্রসঙ্গে যে কারও জন্য একই সেট (অবজেক্ট) উপলব্ধ থাকতে হবে। ঠিক আছে. সমস্যাটি প্রতিটি অবজেক্টের জন্য সমাধান করছে, কোনও প্রসঙ্গ পরিষেবা তৈরি বা জাভার স্প্রিংয়ের মতো ফ্রেমওয়ার্ক ব্যবহার করে নয়।
লর্যান্ড কেদভেস

3
বর্তমান সুদের হার সম্পর্কে ব্যতিক্রমী কিছু নেই। আসল বিশ্বের আইটেমের একটি মূল্য রয়েছে এর অনেকগুলি উদাহরণ রয়েছে - খোলা রাস্তার গতির সীমা, গ্রহণযোগ্য রক্তের অ্যালকোহলের স্তর, জিএসটি (বা ভ্যাট) করের হার খুব কমেরই নাম। বিজ্ঞান এবং প্রকৌশল মধ্যে পার্থক্য - ইঞ্জিনিয়াররা আজকের বাস্তব বিশ্বের সমস্যাগুলি সমাধান করে, বিজ্ঞানীরা স্বপ্নের স্বপ্ন দেখেন যে সত্যিকারের বিশ্বটি পুরোপুরি সুন্দর বাক্সে পূর্ণ হবে এবং সেই সমস্যাগুলি সমাধান করবে।
mattnz

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

@ ম্যাটনেজ, সমস্যাটি হ'ল আপনার প্রতিটি উদাহরণ উদাহরণ পরিবর্তনযোগ্য যেখানে আপনি আপনার প্রোগ্রামটি একাধিক ব্যবহারকারীর বেসগুলিতে বিতরণ করেন যা সংস্থাগুলি, রাজ্যগুলি বা দেশগুলিকে বিস্তৃত করতে পারে। এগুলির সবগুলি সময়ের সাথে সাথে পরিবর্তনশীলও হতে পারে।
ড্যান লিয়ন্স

10

এই নির্দিষ্ট ক্ষেত্রে আমি সিঙ্গলটন প্যাটার্নটি ব্যবহার করব । ফিনান্সিয়াল এনভায়রনমেন্ট হ'ল সেই বিষয়টি যা অন্যান্য সমস্ত শ্রেণির পাঠাগারগুলি সচেতন, তবে এটি সিঙ্গেলটন দ্বারা ইনস্ট্যান্ট করা হবে। আদর্শভাবে আপনি তারপরে সেই তাত্ক্ষণিক বস্তুটি বিভিন্ন শ্রেণীর পাঠাগারগুলিতে প্রেরণ করবেন।

উদাহরণ স্বরূপ:

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

অন্যান্য শ্রেণিগুলি কেবল সত্ত্বা শ্রেণীর পাঠাগারের সাথে একত্রে আবদ্ধ হয়, তারা একটি তাত্ক্ষণিক ফিনান্সিয়াল এনভায়রনমেন্ট অবজেক্ট গ্রহণ করে। কীভাবে এটি তৈরি করা হয়েছিল তা তারা যত্ন করে না, কেবল পরিষেবা স্তরটি করে, তারা যা চায় কেবল তথ্য। @ ট্যালাস্টিন উল্লেখ করেছেন যে, স্থানীয়দের নিয়মের উপর নির্ভর করে একক একাধিক ফিনান্সিয়াল এনভায়রনমেন্টাল অবজেক্টগুলি সঞ্চয় করতে যথেষ্ট স্মার্ট হতে পারে।

পার্শ্ব নোটে, আমি সিঙ্গলটন প্যাটার্নের বিশাল ফ্যান নই, আমি এটিকে কোড গন্ধ হিসাবে বিবেচনা করি, কারণ এটি খুব সহজেই অপব্যবহার করা যায়। তবে কিছু ক্ষেত্রে আপনার এটি প্রয়োজন।

হালনাগাদ:

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

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

উপরের উদাহরণ থেকে একমাত্র জিনিসটি পরিবর্তিত হবে, সেবার লেয়ারের বিভিন্ন শ্রেণীর জন্য ফিনান্সিয়াল ইনফরমেশনটির প্রয়োজন হয় যা সিঙ্গলটন অবজেক্টটি ইনস্ট্যান্টিয়েট করার পরিবর্তে ডেটা অ্যাক্সেস লেয়ার থেকে পুনরুদ্ধার করতে পারে।


8
বিতৃষ্ণা। গ্লোবালকে সিঙ্গলটন বানানো এটিকে কম গন্ধযুক্ত করে না। যদি কিছু থাকে তবে আপনি নিজেকে আরও বেশি সীমাবদ্ধ রেখেছেন।
টেলাস্টিন

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

4
আমি একটি ব্যঙ্গাত্মক মন্তব্য পোস্ট করতে যাচ্ছিলাম যা "এটি একটি সিঙ্গলটন করুন এবং এটি খারাপ অনুশীলন থেকে সেরা অনুশীলনে চলে যাবে", তবে আমি দেখলাম এটি ইতিমধ্যে একটি গৃহীত এবং আপলোড করা উত্তর ছিল। খুব সুন্দর!
কেভিন

4
Singletonওও সিনট্যাকটিক চিনি এবং অলস এবং দুর্বল মনের জন্য ক্র্যাচযুক্ত একটি গ্লোবাল। Singleton/globalপরম খারাপ উপায় শক্তভাবে দম্পতি কিছু আপনার কোড একটি হতে হবে ক্যান্সার যখন আপনি বুঝতে পারছি কি একটি colossally খারাপ ধারণা এটি ছিল এবং কেন সবাই বলে তারা পরে!

4
@ টেলাস্টিন: এটি একটি দুর্ভাগ্যজনক বাস্তবতা যে সর্বাধিক নিখুঁত ডিজাইনগুলি যখন তারা তাত্ত্বিক সফ্টওয়্যার ডিজাইনের নিখুঁতভাবে অর্ডার করা জগত ছেড়ে চলে যায় এবং সত্যিকারের বিশ্বে যোগদান করে, তখন fubar'd হয়ে যায়।
mattnz

4

কনফিগারেশন ফাইল?

আপনার যদি এমন মান থাকে যা "বিশ্বব্যাপী" ব্যবহৃত হয়, দয়া করে এগুলিকে একটি কনফিগারেশন ফাইলে রাখুন। তারপরে প্রতিটি সিস্টেম এবং সাবসিস্টেম এটি উল্লেখ করতে এবং প্রয়োজনীয় কীগুলি টানতে পারে, কেবল তাদের পঠনযোগ্য করে তুলবে।


সুতরাং আপনি কি প্রতিবার সুদের হার পরিবর্তনের সাথে সাথে কোনও কনফিগারেশন ফাইল আপডেট করতে পারবেন?
কালেব

2
কেন না? অবশ্যই "পরিবর্তনশীল" উপর নির্ভর করে যেগুলি ঘন ঘন পরিবর্তিত হয় সেগুলি সেন্ট্রালাইজড ডেটাস্টোরের ভিতরে স্থাপন করা উচিত।
অন্ধকার রাত

1

আমি এমন একজনের অভিজ্ঞতা থেকে বলছি যার সবেমাত্র প্রকাশিত ভাল আকারের (~ 50 কে এলওসি) প্রকল্পের রক্ষণাবেক্ষণের এক মাস আমাদের রয়েছে।

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

আমার প্রাথমিক পরামর্শটি হ'ল যদি আপনার বেশ কয়েকটি ভিন্ন শ্রেণি থাকে যার বর্তমান সুদের হারের প্রয়োজন হয় তবে আপনি সম্ভবত তাদের একটি IInterestRateConsumerবা কিছু বাস্তবায়ন করতে চান। সেই ইন্টারফেসের অভ্যন্তরে আপনার একটি SetCurrentInterestRate(double rate)(বা যা কিছু বোঝায়) বা সম্ভবত একটি সম্পত্তি থাকবে।

চারপাশে সুদের হার পাশ করা আসলে মিলিত হয় না - যদি আপনার শ্রেণীর একটি সুদের হারের প্রয়োজন হয়, তবে এটি তার API এর অংশ। এটি কেবল তখনই মিলিত হয় যদি আপনার ক্লাসগুলির মধ্যে একটি অন্য শ্রেণিটি সেই সুদের হার কীভাবে ব্যবহার করে ঠিক তা নিয়ে উদ্বেগ শুরু করে।


চারপাশে সুদের হার পার করা সংশ্লেষ, এটি কেবল খারাপ মিলন নয়।
ভাগানড্রয়েড

1

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

অবশ্যই, আপনাকে সিলেটলেটস (এমনকি বিকল্প পরিবর্তক সিলেটলেটস) বনাম সমস্ত জায়গায় একই বস্তুটি পাস করার ব্যথা সহ সমস্যার সমাধান করতে হবে।

যতক্ষণ না "আর্থিক পরিবেশ" অবজেক্ট - এটি প্রথম পাসে প্রোগ্রাম করা সুবিধাজনক তবে আপনি যখন শেষ করেন আপনি কিছু অতিরিক্ত নির্ভরতা যুক্ত করেছেন। যেসব ক্লাসে কেবলমাত্র সুদের হারের প্রয়োজন হয় কেবলমাত্র আর্থিক পরিবেশের বিষয়টি পাস করার সময় এটি কাজ করে, যা আপনার যখন কোনও পরিবেশগত পরিবেশের বিষয়ে পড়ে না থাকে তখন তাদের পুনরায় ব্যবহার করা কঠিন হয়ে যায়। সুতরাং আমি এটি ব্যাপকভাবে পাস নিরুৎসাহিত করব।


0

কেন কেন্দ্রীয় ক্যাশে সুদের হারের ডেটা রাখবেন না?

আপনি কয়েকটি ক্যাশে গ্রন্থাগারগুলির মধ্যে একটি ব্যবহার করতে পারেন, যার মধ্যে আপনার প্রয়োজন অনুসারে সর্বোত্তমভাবে স্যুট করুন, মেমক্যাচের মতো কিছু আপনার সম্মতি এবং কোড পরিচালনার সমস্যাগুলি সমাধান করে এবং আপনার অ্যাপ্লিকেশনটিকে একাধিক প্রক্রিয়াতে স্কেল করার অনুমতি দেবে।

অথবা পুরো হোগে যান এবং এগুলি একটি ডাটাবেসে সংরক্ষণ করুন, যা আপনাকে একাধিক সার্ভারে স্কেল করার অনুমতি দেবে।


0

এ জাতীয় পরিস্থিতিতে আমি মাঝে মাঝে একাধিক স্তর সহ সফলভাবে "প্রসঙ্গ" শব্দটি চালু (পুনরায় ব্যবহার) করেছি used

এর অর্থ একটি সিঙ্গলটন, এভাবে "গ্লোবাল" অবজেক্ট স্টোর, যেখান থেকে এই ধরণের অবজেক্টগুলির জন্য অনুরোধ করা যেতে পারে। যে কোডগুলিতে তাদের প্রয়োজন হয় সেগুলিতে স্টোরের শিরোনাম অন্তর্ভুক্ত করে এবং তাদের অবজেক্টের দৃষ্টান্তগুলি পেতে (এখনকার মতো সুদের হার সরবরাহকারী) গ্লোবাল ফাংশনগুলি ব্যবহার করে।

দোকানটি হতে পারে:

  • কঠোরভাবে টাইপ করা হয়েছে: আপনি সমস্ত পরিবেশন করা প্রকারের জন্য শিরোনাম অন্তর্ভুক্ত করেন এবং যাতে আপনি টাইপড অ্যাকসেসর তৈরি করতে পারেন যেমন ইন্টারেস্টেরেট গেটকন্টরআইন্টারট্রেট রেট ();
  • বা জেনেরিক: অবজেক্ট গেটবজেক্ট (এনওম ওপটাইপ); এবং কেবলমাত্র নতুন ধরণের (obtypeCurrentInterestRate) দিয়ে obType এনাম প্রসারিত করুন।

সিস্টেমটি যত বড়, ততোধিক পরবর্তী সমাধানটি ব্যবহারযোগ্য, ভুল এনুম ব্যবহারের যথেষ্ট ছোট ঝুঁকির জন্য। অন্যদিকে, এমন ভাষাগুলির সাথে যা ফরোয়ার্ড প্রকারের ঘোষণাকে মঞ্জুরি দেয়, আমি মনে করি আপনি স্টোরের সমস্ত শিরোনাম না রেখে টাইপড অ্যাকসেসর ব্যবহার করতে পারেন।

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

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

যখন অনুরোধটি আসবে, আপনি অনুরোধ করা অবজেক্টটি কোন প্রসঙ্গের স্তরের তা স্থির করুন, কলের জন্য সেই প্রসঙ্গটি পান। যদি বস্তুটি থাকে তবে আপনি এটি আবার প্রেরণ করুন; যদি তা না হয় তবে আপনি এটিকে প্রসঙ্গের স্তরে তৈরি এবং সঞ্চয় করে এটিকে ফিরিয়ে দিন। অবশ্যই, সৃষ্টি বিভাগটি সিঙ্ক্রোনাইজ করুন (এবং এটি বিতরণ করা ক্যাশে প্রকাশ করুন)। এই ভাষাটি প্লাগইনের মতো কনফিগারযোগ্য হতে পারে, সর্বোত্তম ভাষার সাথে তাদের শ্রেণীর নাম (জাভা, অবজেক্টিভ সি, ...) দিয়ে বস্তু দৃষ্টান্ত তৈরি করতে পারে, তবে আপনি সিতে এবং প্লাগেবল লাইব্রেরিতে ফ্যাক্টরী ফাংশনগুলি সহ এটি করতে পারেন।

পার্শ্ব নোট: কলকারীকে তার নিজস্ব প্রসঙ্গ এবং অনুরোধ করা অবজেক্টের প্রসঙ্গের স্তর সম্পর্কে খুব বেশি কিছু জানা উচিত নয়। কারণ: 1: এই পরামিতিগুলি খেলে ভুল (বা "চালাক কৌশল") করা সহজ; 2: অনুরোধের প্রসঙ্গ স্তরটি পরে পরিবর্তন হতে পারে। আমি বেশিরভাগ প্রসঙ্গে তথ্য থ্রেডের সাথে সংযুক্ত করি, তাই অনুরোধ থেকে অতিরিক্ত পরামিতি ছাড়াই অবজেক্ট স্টোরটিতে তথ্য রয়েছে।

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

আপনার ক্ষেত্রে এটি এক ধরণের ওভারকিল (কেবলমাত্র বিশ্বব্যাপী পর্যায়ে একটি বস্তু পরিবেশন করা হয়) তবে এখনই বেশ ছোট এবং সাধারণ অতিরিক্ত কোডের জন্য আপনি আরও জটিল প্রয়োজনীয়তার জন্য একটি প্রক্রিয়া পাবেন।

আরেকটি সুসংবাদ: আপনি যদি জাভাতে থাকেন তবে খুব বেশি চিন্তা না করেই আপনি স্প্রিং থেকে এই পরিষেবাটি পান, আমি কেবল বিশদে এটি ব্যাখ্যা করতে চাই।


0

গ্লোবাল (বা সিঙ্গলটন) ব্যবহার না করার কারণটি হ'ল আপনি প্রথমে কেবলমাত্র একটি মান রাখার প্রত্যাশা করলেও প্রায়শই একই প্রোগ্রামে একই কোডটি একাধিকবার ব্যবহার করতে সক্ষম হওয়ার জন্য আশ্চর্যজনকভাবে কার্যকর হয়:

  • সুদের হার আলাদা থাকলে কী ঘটবে তা গণনা করা
  • কিছু উপাদান মার্কিন সুদের হারের উপর নির্ভর করে এবং কিছু উপাদান যুক্তরাজ্যের সুদের হারের উপর নির্ভর করে

আমি সুদের হারকে "আর্থিক উপকরণ" শ্রেণীর সদস্য করে দেব এবং স্বীকার করব যে আপনাকে এটি কোনও সদস্য শ্রেণিতে পাঠাতে হবে (হয় প্রতি গণনা, অথবা নির্মাণের ক্ষেত্রে এটিতে পয়েন্টার / হুক দেওয়া হবে)।


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