যদি আমি বুঝতে পারি, অভিনেতা মডেলটি কেবল অবজেক্ট মডেলের মতো তবে কয়েকটি পার্থক্য সহ:
- প্রতিটি বস্তু এটির নিজস্ব আলাদা থ্রেড তৈরি করে এবং আপনার হাজার হাজার বস্তু থাকা সত্ত্বেও এটি কোনও সমস্যা নয়।
- অভিনেতা ফাংশনগুলিতে কল করে এবং ফেরতের মানগুলি অর্জন করে পরিবর্তে বার্তা প্রেরণ ও গ্রহণ করে ইন্টারঅ্যাক্ট করেন না।
- আপনি যদি সেই মডেলটি লঙ্ঘন না করেন তবে আপনার অ্যাপ্লিকেশন জাতিগত অবস্থার কোনও ঝুঁকি ছাড়াই তার সম্পূর্ণ শক্তিতে সম্মতি ব্যবহার করবে।
- আপনি ওয়েতে যা কিছু করতে পারেন আপনি অভিনেতাদের ব্যবহার করেই করতে পারেন তবে আরও ভাল, সমস্যাটি হ'ল আমরা গত বছরগুলিতে কোড করেছিলাম সমস্তই ওও ভিত্তিক ছিল - তবে একটি রূপান্তর আসন্ন is
উদাহরণস্বরূপ, ধরুন আমাকে 3 ডি ভেক্টর শ্রেণি / অভিনেতা সংজ্ঞায়িত করতে হবে, দুটি দৃষ্টান্ত তৈরি করতে হবে এবং তাদের উপর একটি যোগ ক্রিয়াকলাপ কল করতে হবে।
অবজেক্ট ওরিয়েন্টেড:
class V3d {
constructor V3d(x,y,z) //bla
float x,y,z;
function sum(V3d b)
{
return V3d(x+b.x,y+b.y,z+b.z);
}
}
//using:
mySum = V3d(1,2,3).sum(V3d(3,2,1)) //creates 2 instances, sum, returns instantly
drawPoint(mySum) //uses the result
অভিনেতার মডেল:
actor V3d
{
constructor V3d(x,y,z) //bla
float x,y,z;
loop
{
receive 'sum',b:V3d :
send(caller,'sumResult',V3d(x+b.x,y+b.y,z+b.z))
}
}
//using:
send(V3d(1,2,3),'sum',V3d(3,2,1)) //creates 2 instances, send to the first one a request to sum with the second one
loop
{
receive 'sumResult',result:
drawPoint(result) //receives result and draws it
}
এইটাই কি সেইটা? নাকি আমি পুরোপুরি ভুল?