অবজেক্ট ওরিয়েন্টেশন বিশেষত মূল্যবান কারণ এই ধরণের পরিস্থিতি দেখা দেয় এবং এটি আপনাকে যুক্তিসঙ্গতভাবে বিমূর্ততা ডিজাইনের সরঞ্জাম দেয় যা আপনাকে জটিলতা সজ্জিত করতে দেয়।
এখানে আসল প্রশ্নটি হল, আপনি কোথায় এই জটিলতাটি আবদ্ধ করেন?
সুতরাং আমাকে এক মুহূর্ত পিছিয়ে যেতে এবং আমি এখানে 'জটিলতা' উল্লেখ করছি। আপনার সমস্যা (যেমনটি আমি এটি বুঝতে পারি; আমি ভুল হলে আমাকে সংশোধন করি) হ'ল একটি দৃ pers়তা মডেল যা আপনাকে ডেটা দিয়ে সম্পূর্ণ করার জন্য প্রয়োজনীয় কার্যগুলির জন্য কার্যকরভাবে ব্যবহারযোগ্য মডেল নয়। এটি অন্যান্য কাজের জন্য কার্যকর এবং ব্যবহারযোগ্য হতে পারে তবে আপনার কাজের জন্য নয় ।
সুতরাং যখন আমাদের কাছে এমন ডেটা রয়েছে যা আমাদের উপায়গুলির জন্য একটি ভাল মডেল উপস্থাপন করে না তখন আমরা কী করব?
অনুবাদ করা. এটিই আপনি করতে পারেন। সেই অনুবাদটি আমি উপরে বর্ণিত 'জটিলতা'। সুতরাং এখন আমরা গ্রহণ করেছি যে আমরা মডেলটি অনুবাদ করতে চলেছি, আমাদের কয়েকটি কারণের বিষয়ে সিদ্ধান্ত নেওয়া দরকার।
আমাদের কি উভয় দিকনির্দেশ অনুবাদ করার দরকার আছে? উভয় দিকনির্দেশ কি একই হিসাবে অনুবাদ করা হবে:
(টিবিএল এ, টিবিএল বি) -> ওবজ এক্স (পড়ুন)
ওবজ এক্স -> (টিবিএল এ, টিবিএল বি) (লিখুন)
বা সন্নিবেশ / আপডেট / মুছে ফেলা ক্রিয়াকলাপগুলি বিভিন্ন ধরণের অবজেক্টের প্রতিনিধিত্ব করে যেমন আপনি ওবজ এক্স হিসাবে ডেটা পড়েন, তবে ডেটা jোকানো / আপডেট করা হয় ওবজ ওয়াই থেকে? আপনি যেতে চান এই দুটি উপায়গুলির মধ্যে, বা কোনও আপডেট / সন্নিবেশ / মুছা সম্ভব না হলে আপনি যেখানে অনুবাদটি রাখতে চান সেই গুরুত্বপূর্ণ বিষয়গুলি ।
আপনি কোথায় অনুবাদ করেন?
এই উত্তরে আমি প্রথম বিবৃতিতে ফিরে এসেছি; ওও আপনাকে জটিলতা এনক্যাপুলেট করার অনুমতি দেয় এবং আমি এখানে যা উল্লেখ করি তা হ'ল কেবল আপনাকেই করা উচিত নয়, তবে আপনি অবশ্যই অবশ্যই সেই জটিলতাটি আবদ্ধ করতে পারেন যদি আপনি নিশ্চিত করতে চান যে এটি আপনার সমস্ত কোডে ফাঁস না হয়ে অনুসন্ধান করে ep একই সময়ে, আপনার একটি সঠিক বিমূর্ততা থাকতে পারে না তা স্বীকৃতি দেওয়া জরুরী তাই খুব কার্যকর এবং ব্যবহারযোগ্য ব্যবহারের চেয়ে সেই সম্পর্কে কম চিন্তা করুন।
আবার এখন; আপনার সমস্যাটি: আপনি এই জটিলতাটি কোথায় রাখেন? ভাল আপনার পছন্দ আছে।
সঞ্চিত পদ্ধতি ব্যবহার করে আপনি এটি ডাটাবেসে করতে পারেন । এটি প্রায়শই ওআরএম এর সাথে খুব ভাল না খোলার অপূর্ণতা রয়েছে তবে এটি সর্বদা সত্য নয়। সঞ্চিত পদ্ধতিগুলি প্রায়শই কার্য সম্পাদন সহ কিছু সুবিধা দেয়। সঞ্চিত পদ্ধতিগুলির জন্য অনেক রক্ষণাবেক্ষণের প্রয়োজন হতে পারে তবে আপনার নির্দিষ্ট দৃশ্যের বিশ্লেষণ করা এবং এটি রক্ষণাবেক্ষণ অন্যান্য পছন্দগুলির চেয়ে কম বা কম হবে কিনা তা আপনার উপর নির্ভর করে। আমি ব্যক্তিগতভাবে সঞ্চিত পদ্ধতিতে খুব দক্ষ, এবং যেমন উপলব্ধ প্রতিভা এই সত্য ওভারহেড হ্রাস; আপনি যা জানেন তার ভিত্তিতে সিদ্ধান্ত নেওয়ার মানটিকে কখনই হ্রাস করবেন না। কখনও কখনও সাবোস্টিমাল সলিউশন সঠিক সমাধানের চেয়ে আরও অনুকূল হতে পারে কারণ আপনি বা আপনার দল কীভাবে এটি সর্বোত্তম সমাধানের চেয়ে আরও ভাল তৈরি করতে এবং বজায় রাখতে জানেন।
আর একটি ইন-ডাটাবেস বিকল্প ভিউ হয়। আপনার ডাটাবেস সার্ভারের উপর নির্ভর করে এগুলি অত্যন্ত অনুকূল বা উপ-অনুকূল হতে পারে বা এমনকি কার্যকরও নাও হতে পারে, আপনার ডাটাবেসে কোন সূচীকরণ বিকল্পগুলি পাওয়া যায় তার উপর নির্ভর করে একটি ত্রুটি কোয়ের সময় হতে পারে। আপনার যদি কোনও ডেটা সংশোধন করার প্রয়োজন না হয় (সন্নিবেশ / আপডেট / মুছুন) যদি ভিউগুলি আরও ভাল পছন্দ হয়ে ওঠে।
ডাটাবেসটি অতিক্রম করতে আপনার কাছে সংগ্রহস্থল প্যাটার্নটি ব্যবহার করার পুরানো স্ট্যান্ডবাই রয়েছে। এটি একটি সময়-পরীক্ষা পদ্ধতি যা খুব কার্যকর হতে পারে। ত্রুটিগুলি বয়লার প্লেট অন্তর্ভুক্ত করে তবে ভাল ফ্যাক্টরযুক্ত সংগ্রহস্থলগুলি এর কিছু পরিমাণ এড়াতে পারে এবং এগুলি যখন দুর্ভাগ্য পরিমাণে বয়লার প্লেটের ফলস্বরূপ ঘটে তখনও সংগ্রহস্থলের সহজ কোড যা বোঝা ও বজায় রাখা সহজ এবং পাশাপাশি একটি ভাল এপিআই উপস্থাপন করার প্রবণতা রয়েছে / বিমূর্ততা। এছাড়াও সংগ্রহস্থলগুলি তাদের ইউনিট-টেস্টিবিলিটির জন্য ভাল হতে পারে যা আপনি ইন-ডাটাবেস বিকল্পগুলির সাথে হারিয়ে ফেলে।
সেখানে অটো-ম্যাপারের মতো সরঞ্জাম রয়েছে যা একটি ওআরএমকে ব্যবহারযোগ্য করে তুলতে পারে যেখানে তারা ডাটাবেস-মডেলের মধ্যে অরম থেকে ব্যবহারযোগ্য মডেলগুলির মধ্যে অনুবাদ করতে পারে, তবে এই সরঞ্জামগুলির মধ্যে কিছু ম্যাজিকের মতো আচরণ করা / বজায় রাখতে জটিল হতে পারে; যদিও তারা ন্যূনতম ওভারহেড কোড তৈরি করে যার ফলস্বরূপ ভাল বোঝা গেলে কম রক্ষণাবেক্ষণের ওভারহেড হয়।
এরপরে আপনি ডাটাবেস থেকে আরও এবং আরও ধাপে ধাপে ধাপে ধাপে যুক্ত হলেন যার অর্থ বহনযোগ্য কোড হতে চলেছে যা অন-অনুবাদিত অধ্যবসায় মডেলটির সাথে ডিল করতে চলেছে, যা প্রকৃতপক্ষে অপ্রীতিকর হতে চলেছে। এই পরিস্থিতিতে আপনি আপনার ইউআইতে অনুবাদ স্তরটি রাখার বিষয়ে কথা বলছেন যা মনে হচ্ছে আপনি এখন করছেন। এটি সাধারণত খুব খারাপ ধারণা এবং সময়ের সাথে ভয়ঙ্করভাবে ক্ষয় হয়।
এবার পাগল কথা বলা শুরু করা যাক ।
Object
শুধুমাত্র শেষ-সব হতে সব বিমূর্ততা যে বিদ্যমান নয়। কম্পিউটার বিজ্ঞান অধ্যয়ন করা হয়েছে এবং এর আগেও গণিতের অধ্যয়ন থেকে বহু বছর ধরে বিমূর্ততা বিকশিত হওয়ার এক গভীরতা রয়েছে। যদি আমরা সৃজনশীল হয়ে উঠতে শুরু করি তবে আসুন যে অধ্যয়ন করা আছে সেগুলি উপলভ্য জানা বিমূর্ততা সম্পর্কে কথা বলা শুরু করুন।
অভিনেতা মডেল আছে।এটি একটি আকর্ষণীয় পদ্ধতির কারণ এটি বলে যে আপনি যা কিছু করেন তা হ'ল অন্য কোডগুলিতে বার্তা প্রেরণ যা কার্যকরভাবে সমস্ত কাজ অন্য কোডটিতে প্রেরণ করে, যা আপনার সমস্ত কোড থেকে দূরে জটিলতার আবরণে খুব কার্যকর। এটি এতক্ষণ কাজ করতে পারে যে আপনি কোনও অভিনেতাকে "আমার কাছে ওবজ এক্স ওয়াইকে প্রেরণ করা দরকার" বলে একটি বার্তা প্রেরণ করেছেন এবং আপনার ওয়াই অবস্থানের স্থানে উত্তরের জন্য একটি প্রতিক্রিয়ার অপেক্ষার জন্য একটি অভ্যর্থনা রয়েছে which "আমার ওবজ এক্স এবং গণনা ওয়াই, জেড এটি করা হয়েছে" এবং তারপরে আপনাকে অপেক্ষা করার দরকারও নেই; অনুবাদটি সেই বার্তা পাসের অন্যদিকে ঘটে এবং আপনি যদি এর ফলাফলটি পড়ার দরকার না পান তবে আপনি কেবল এগিয়ে যেতে পারেন। এটি আপনার উদ্দেশ্যে অভিনেতা মডেলটির সামান্য অপব্যবহার হতে পারে, তবে এটি সব নির্ভর করে;
আরেকটি এনক্যাপসুলেশন সীমানা হ'ল প্রক্রিয়া সীমানা। এগুলি জটিলতার জন্য খুব কার্যকরভাবে আলাদা করার জন্য ব্যবহার করা যেতে পারে। আপনি অনুবাদ কোডটি একটি ওয়েব পরিষেবা হিসাবে তৈরি করতে পারেন যেখানে যোগাযোগটি সহজ এসটিটিপি, এসওএপি, আরএসটি ব্যবহার করে বা আপনি যদি সত্যিই নিজের প্রোটোকল চান (প্রস্তাবিত নয়)। STOMP পুরোপুরি একটি খারাপ নতুন প্রোটোকল নয়। অথবা আপনি যে কোনও প্রোটোকল বেছে নিন তা আবার খুব দ্রুত যোগাযোগ করার জন্য সিস্টেম-স্থানীয় প্রচারিত মেমরি পাইপ সহ একটি সাধারণ ডেমন পরিষেবা ব্যবহার করুন। এর আসলে কিছু ভাল সুবিধা রয়েছে:
- আপনার একাধিক প্রক্রিয়া চলতে পারে যা একই সাথে পুরানো এবং নতুন সংস্করণ সমর্থনের জন্য অনুবাদ করে যা আপনাকে একই সাথে একটি অবজেক্ট মডেল ভি 2 প্রচার করার জন্য অনুবাদ পরিষেবা আপডেট করতে দেয় এবং তারপরে পৃথকভাবে পৃথকভাবে নতুন অবজেক্টের সাথে কাজ করার জন্য গ্রাহক কোড আপডেট করে মডেল.
- পারফরম্যান্সের জন্য কোনও প্রক্রিয়াটিকে পিন করার মতো আকর্ষণীয় কাজ আপনি করতে পারেন, এই তথ্যটিতে স্পর্শ করার জন্য সুরক্ষা অধিকার নিয়ে একমাত্র প্রক্রিয়া চালিয়ে যাওয়ার মাধ্যমে আপনি এই পদ্ধতির বেশ কয়েকটি সুরক্ষা সুরক্ষা পেতে পারেন।
- আপনি যখন প্রসেসের সীমানা সম্পর্কে কথা বলছেন তখন আপনি একটি খুব দৃ bound় সীমানা পেয়ে যাবেন যা দীর্ঘকাল আপনার বিমূর্ততার ন্যূনতম ফাঁস নিশ্চিত করা স্থির থাকবে কারণ অনুবাদ স্পেসে লেখার কোডটি অনুবাদ জায়গার বাইরে কল করতে সক্ষম হবে না কারণ তারা চুক্তির মাধ্যমে ব্যবহারের দৃশ্যের একটি নির্দিষ্ট সেট নিশ্চিত করে প্রক্রিয়া সুযোগ ভাগ করে নেবে না।
- অ্যাসিনক্রোনাস / অ-ব্লকিং আপডেটগুলি সহজ হওয়ার ক্ষমতা।
ত্রুটিগুলি স্পষ্টতই সাধারণ প্রয়োজনের চেয়ে বেশি রক্ষণাবেক্ষণ, যোগাযোগের ওভারহেড কর্মক্ষমতা এবং রক্ষণাবেক্ষণকে প্রভাবিত করে।
জটিলতার ঝাঁকুনির জন্য বিভিন্ন ধরণের উপায় রয়েছে যা সেই জটিলতাটিকে আপনার সিস্টেমে আরও অদ্ভুত এবং কৌতূহলী জায়গায় স্থাপন করতে পারে। উচ্চতর অর্ডার ফাংশনগুলির ফর্মগুলি ব্যবহার করে (প্রায়শই কৌশল প্যাটার্ন বা অবজেক্টের নিদর্শনগুলির বিভিন্ন অন্যান্য বিজোড় রূপগুলি ব্যবহার করে নকল), আপনি খুব আকর্ষণীয় কিছু করতে পারেন।
এটা ঠিক, একটি monad সম্পর্কে কথা বলা শুরু করা যাক। আপনি এই অনুবাদ স্তরটি একটি নির্দিষ্ট স্বতন্ত্র ফ্যাশনে তৈরি করতে পারেন যা স্বতন্ত্র অনুবাদগুলি প্রয়োজনীয় যা পৃথক পৃথক অনুবাদ করে তবে এই সমস্ত অনুবাদ ফাংশনটি দৃশ্যমান নয় এমনভাবে লুকিয়ে রাখে যাতে তারা বাইরের কোডটিতে খুব সহজেই অ্যাক্সেসযোগ্য হয়। এটির উপর নির্ভরতা হ্রাস করার সুবিধা রয়েছে যাতে তারা খুব বেশি বাহ্যিক কোড প্রভাবিত না করে সহজেই পরিবর্তন করতে দেয়। তারপরে আপনি এমন একটি শ্রেণি তৈরি করেন যা উচ্চতর অর্ডার ফাংশনগুলি গ্রহণ করে (বেনাম ফাংশন, ল্যাম্বডা ফাংশন, কৌশল অবজেক্টস, তবে আপনাকে সেগুলি কাঠামোগত করা দরকার) যা কোনও ওও মডেল টাইপের অবজেক্টগুলিতে কাজ করে। তারপরে আপনি অন্তর্নিহিত কোডটিকে উপযুক্ত অনুবাদ পদ্ধতি ব্যবহার করে আক্ষরিক সম্পাদন করতে পারেন those
এটি এমন একটি সীমানা তৈরি করে যেখানে সমস্ত অনুবাদ কেবল আপনার সমস্ত কোড থেকে দূরে সীমাটির অন্যদিকে বিদ্যমান নয় ; এটি কেবলমাত্র আপনার পাশের কোডটিকে সেই সীমানার প্রবেশের স্থানটি ব্যতীত অন্য কিছু সম্পর্কে জানতে না দেওয়ার পক্ষে ব্যবহার করা হয়।
ঠিক আছে, হ্যাঁ যে সত্যিই পাগল কথা বলছে, তবে কে জানে; আপনি কেবল ক্রেজি হতে পারেন (গুরুতরভাবে, 88% এর নিচে ক্রেজিট রেটিং সহ মনডগুলি গ্রহণ করবেন না, শারীরিক আঘাতের আসল ঝুঁকি রয়েছে)।