مقدمه
اگر با AngularJS اجرا میکنید، ممکن است بدانید که میتوانید منطق تجاری را در کنترلکنندههای خود پیادهسازی کنید و فقط با تماس با آنها در بخشهای مختلف برنامهتان از آنها استفاده کنید. اما همانطور که همه ما می دانیم، کد بیش از حد در یک مکان هرگز ایده خوبی نیست. و این یک عادت خوب در نظر گرفته می شود که منطق تجاری کامل را در یک کنترلر ننویسید زیرا ممکن است مجبور شوید دوباره از همان منطق ها در کنترلر دیگری استفاده کنید. بنابراین انجام مکرر یک کار یک کار بیش از حد و همچنین مستعد خطا است.
پس زمینه
بنابراین در این مقاله، من به شما نشان خواهم داد که چگونه ارائه دهندگان AngularJS می توانند چرخه زندگی کدنویسی شما را با جدا کردن این منطق تجاری از کنترلرهای شما آسان تر کنند و از تزریق باگ در برنامه شما جلوگیری کنند.
شروع شدن
پس بیایید با ایجاد یک شی ساده در جاوا اسکریپت شروع کنیم. راههای زیادی برای ایجاد یک شی در جاوا اسکریپت وجود دارد، اما من میخواهم سادهترین و معتبرترین راه را به شما نشان دهم. و این به عنوان ایجاد یک شی توسط حروف الفظی شی شناخته می شود. در ابتدا، من می خواهم یک شی آرنولد شوارتزنگر (یک بازیگر هالیوود) بسازم . شی دارای یک خاصیت برای نگه داشتن نام بازیگر، یک خاصیت برای نام خانوادگی، یک ویژگی برای عبارت catch و در آخر یک ویژگی خواهد بود که یک رشته با تمام آن ویژگی های قبلی ساخته و به کاربران برنامه نشان می دهد.
استفاده از کد
ایجاد یک شی به معنای واقعی کلمه به آسانی پای است. این فقط چند جفت ارزش کلیدی است. تنها کاری که باید انجام دهید این است که یک کلید [ رشته ای را تعریف کنیدنشان دهنده نام ویژگی] و مقدار مرتبط با آن. بنابراین از این مفهوم، شیء آرنولد شوارتزنگر ما به شکل واقعی شبیه قطعه کد زیر خواهد بود:
- var arnoldSchwarzenegger = {
- firstName: "Arnold",
- lastName: "Schwarzenegger",
- catchPhrase: "Hasta la vista, baby",
- sayCatchPhrase: function () {
- return this.firstName + " " + this.lastName + " says " + this.catchPhrase;
- }
- };
حال اگر ویژگی sayCatchPhrase را به این صورت
صدا بزنید :
- arnoldSchwarzenegger.sayCatchPhrase();
رشته زیر را دریافت خواهید کرد .
" آرنولد شوارتزنگر می گوید Hasta la vista، عزیزم "
به یاد داشته باشید که اولین براکت ها را هنگام فراخوانی sayCatchPhrase اضافه کنید . از آنجایی که جاوا اسکریپت متدهایی برای یک شی ندارد، می توانید با کپسوله کردن یک تابع در یک ویژگی، این قانون را دور بزنید.
اکنون زمان ایجاد شی clintEastwood است . همه چیز مثل قبل است
- var clintEastwood = {
- firstName: "Clint",
- lastName: "Eastwood",
- catchPhrase: "Go ahead. Make my day",
- sayCatchPhrase: function () {
- return this.firstName + " " + this.lastName + " says " + this.catchPhrase;
- }
- };
- clintEastwood.sayCatchPhrase();
"کلینت ایستوود می گوید ادامه بده. روزم را بساز "
الگوی کارخانه
حالا بیایید یک الگوی دیگر ایجاد کنیم. یک لحظه صبر کنید!!! ممکن است از خود بپرسید چرا من همین کار را بارها و بارها انجام می دهم. چرا فقط یک کلاس تعریف نمی کنم. و آن خصوصیات را در آن کلاس اعلام کنید. سپس وقتی زمان فرا رسید، من فقط یک شی از آن کلاس را نمونه سازی می کنم و از آن ویژگی ها استفاده می کنم. خوب شما در مورد این واقعیت که ما همان کار را بارها و بارها انجام می دهیم اما به شانس خودمان درست می گوییم. ما مفهوم کلاس را در جاوا اسکریپت نداریم.
اما نگران نباشید زیرا جایی که اراده وجود دارد راهی وجود دارد. توابع مانند شهروند درجه یک در زبان جاوا اسکریپت هستند. ما تقریباً هر کاری را با توابع انجام می دهیم. و همچنین می توانیم یک شی در یک تابع ایجاد کنیم و آن شی را برگردانیم. به عملکردهایی از این دست، توابع کارخانه ای گفته می شود.
بنابراین ایجاد و برگرداندن یک شی بازیگر با یک تابع کارخانه به شکل زیر است:
- var actor = function (firstName, lastName, catchPhrase) {
- return {
- firstName: firstName,
- lastName: lastName,
- catchPhrase: catchPhrase,
- sayCatchPhrase: function () {
- return this.firstName + " " + this.lastName + " says " + this.catchPhrase;
- }
- };
- };
- var clint = actor("Client", "Eastwood", "Go ahead. Make my day");
- lint.sayCatchPhrase();
" کلینت ایستوود میگوید برو. روزم را بساز "
امیدوارم روشی را که من یک شی با عملکرد کارخانه ایجاد میکنم دوست داشته باشید تا خودم را از انجام دوباره و دوباره همان کار محدود کنم. راه دیگری وجود دارد که میتوانیم یک شی بسازیم.
الگوی سازنده
بسیار خوب، من به شما نشان دادم که چگونه با استفاده از توابع کارخانه جاوا اسکریپت یک شی ایجاد کنید. تا اینجا خوب بود. حالا اجازه دهید راه دیگری برای ایجاد یک شی در جاوا اسکریپت به شما نشان دهم. این راه حل شامل ایجاد یک شی با استفاده از توابع سازنده است. با پیروی از این الگو، شما باید یک شی مانند زیر ایجاد کنید:
- var Actor = function (firstName, lastName, catchPhrase) {
- this.firstName = firstName;
- this.lastName = lastName;
- this.catchPhrase = catchPhrase;
- this.sayCatchPhrase = function() {
- return this.firstName + " " + this.lastName + " says " + this.catchPhrase;
- };
- }
- var clint = new Actor("Client", "Eastwood", "Go ahead. Make my day");