আপনি কি জাভাস্ক্রিপ্ট বিকাশকারী হিসাবে theতিহ্যবাহী নকশার প্যাটার্নগুলিকে অন্যান্য ভাষা / পরিবেশের চেয়ে গুরুত্বপূর্ণ বা কম গুরুত্বপূর্ণ বলে বিবেচনা করছেন?
ক্লাসিকাল ডিজাইনের ধরণগুলি জাভাস্ক্রিপ্টে প্রযোজ্য নয়।
কী প্রয়োগ হয় তা হল মডিউল এবং ফাংশনাল কোড লেখা writing
আপনার কনস্ট্রাক্টর এবং প্রথম শ্রেণির ফাংশনগুলির মিশ্রণটি ব্যবহার করা উচিত।
একটি জাভাস্ক্রিপ্ট বিকাশকারী হিসাবে আমি ব্যক্তিগতভাবে জাভা স্ক্রিপ্টটিকে এলআইএসপি হিসাবে বিবেচনা করার পরিবর্তে জাভা হিসাবে চালিত করার দিকে ধাক্কা দিয়েছি। সুতরাং মোনাড এবং উচ্চ স্তরের ক্রিয়ামূলক শৈল কোড অনুকরণ করার চেষ্টা করুন তবে ক্লাসিকাল ওওপি কোড অনুকরণ করার চেষ্টা করুন।
একটি জাভাস্ক্রিপ্ট বিকাশকারী নিয়মিত ব্যবহার করুন এবং আপনার জাভাস্ক্রিপ্ট বিকাশে তারা কীভাবে সহায়তা করেছে তার একটি উদাহরণ দিন, দয়া করে আপনার শীর্ষ তিনটি ডিজাইনের ধরণগুলির নাম দিন।
আবার ডিজাইনের ধরণগুলি সত্যই এটি প্রয়োগ করে না তবে নীচে তিনটি গুরুত্বপূর্ণ নির্মাণ রয়েছে।
- ক্লোজার ব্যবহার
- প্রথম শ্রেণির কার্যাদি ব্যবহার
- বা তার সাথে অবজেক্ট কারখানার ব্যবহার
new
দয়া করে এমন এক প্রকার প্রসঙ্গ ছেড়ে যান যার জন্য আমি একই ধরণের কোডের তুলনায় designতিহ্যবাহী ডিজাইনের নিদর্শনগুলি ব্যবহার করার তুলনায় এই ধরণের কৌশলগুলির উদাহরণ দেখাতে পারি।
আসুন আমরা কয়েকটি ধ্রুপদী নকশার প্যাটার্নগুলি দেখে থাকি এবং কীভাবে সেগুলি জেএসে প্রয়োগ করা যায় পাশাপাশি বিকল্প প্যাটার্নগুলিও জেএসের জন্য আরও উপযুক্ত:
পর্যবেক্ষক প্যাটার্ন:
ইন node.jsএই সহজভাবে হয় events.EventEmitter। ইন jQueryএই হল $.fn.bind&& $.fn.trigger। ইন backboneএই হল Backbone.Events.triggerএবং Backbone.Events.bind। এটি প্রতিদিনের কোডে ব্যবহৃত একটি খুব সাধারণ প্যাটার্ন।
আমি কখনই থামি এবং ভাবি না "আরে আমি এখানে পর্যবেক্ষক প্যাটার্নটি ব্যবহার করছি!"। না এটি কেবলমাত্র নিম্ন স্তরের বার্তা পাঠানোর উপায় বা ক্যাসকেড পরিবর্তনের উপায় নয় a
উদাহরণস্বরূপ, ব্যাকবোনগুলিতে সমস্ত এমভিসি ভিউগুলি মডেল onchangeইভেন্টের সাথে আবদ্ধ থাকে সুতরাং মডেল পরিবর্তন করে দেখাতে স্বয়ংক্রিয়ভাবে কোনও পরিবর্তনকে ক্যাসকেড করে। হ্যাঁ এটি একটি শক্তিশালী নিদর্শন, তবে ইভেন্ট চালিত প্রোগ্রামিংয়ে এটি ব্যবহার এত সাধারণ যে এটি উপলব্ধি করা যায় নি যে এটি সর্বত্র ব্যবহার করা হয়েছিল।
ইন WebSocketprototcol আমরা আছে .onযা আমরা জুড়তে ব্যবহার on("message", ...ইভেন্ট নেই। আবার এটি খুব সাধারণ তবে এটি আপনার ধ্রুপদী ওওপি ভিত্তিক কোনও স্ট্রিমের পর্যবেক্ষক while (byte b = Stream.ReadNextByte())।
এগুলি পর্যবেক্ষক নিদর্শনগুলির সমস্ত শক্তিশালী ব্যবহার। তবে এটি আপনি ব্যবহার করেন এমন কোনও প্যাটার্ন নয়। এটি ভাষার একটি সহজ অংশ। এটি কেবল কোড।
মেমেন্টো প্যাটার্ন:
এটি কেবল জেএসএন। এটি আপনাকে কোনও অবজেক্টের অবস্থা সিরিয়ালাইজ করতে দেয় যাতে আপনি কোনও ক্রিয়া পূর্বাবস্থায় ফিরিয়ে নিতে পারেন।
function SomeObject() {
var internalState;
this.toJSON = function() {
return internalState;
}
this.set = function(data) {
internalState = data;
}
this.restore = function(json) {
internalState = JSON.parse(json);
}
}
var o = new SomeObject();
o.set("foo"); // foo
var memento = JSON.stringify(o);
o.set("bar"); // bar
o.restore(memento);
জাভাস্ক্রিপ্টে আমরা স্থানীয়ভাবে স্মৃতিসৌধের জন্য একটি এপিআই সমর্থন করি। যে toJSONকোনও অবজেক্টে ডাকা একটি পদ্ধতি কেবল সংজ্ঞায়িত করুন। আপনি যখন ফোন JSON.stringifyকরবেন তখন অভ্যন্তরীণভাবে .toJSONআপনি JSON- এ সিরিয়ালায়িত করতে চান এমন আসল তথ্য পাওয়ার জন্য আপনার অবজেক্টটিতে কল করবে ।
এটি আপনাকে তুচ্ছভাবে আপনার কোডের স্ন্যাপশট তৈরি করতে দেয়।
আবার আমি এটিকে স্মরণীয় প্যাটার্ন বুঝতে পারি না। এটি কেবল সিরিয়ালাইজেশন সরঞ্জামটি ব্যবহার করছে যা জেএসএন।
রাজ্য প্যাটার্ন / কৌশল প্যাটার্ন:
আপনার কোনও রাষ্ট্রীয় প্যাটার্ন দরকার নেই। আপনার প্রথম শ্রেণির ফাংশন এবং গতিশীল প্রকার রয়েছে। শুধু ফাংশন ইনজেক্ট করুন বা ফ্লাইতে বৈশিষ্ট্যগুলি পরিবর্তন করুন।