আমার মতে, এটি ঠিক কীভাবে বোঝানো হচ্ছে তা নয়। এবং এটি ডিআরওয়াই লঙ্ঘন।
ধারণাটি হ'ল মাঝখানে সত্তা / ডোমেন অবজেক্টটি ডোমেনটিকে যথাসম্ভব যথাসম্ভব সুন্দর এবং সুবিধাজনক উপস্থাপনের জন্য মডেল করা হয়েছে। এটি সবকিছুর কেন্দ্রে এবং সবকিছুই এর উপর নির্ভর করতে পারে যেহেতু ডোমেন নিজেই বেশিরভাগ সময় পরিবর্তন করে না।
যদি বাইরের আপনার ডাটাবেসগুলি objects অবজেক্টগুলি সরাসরি সঞ্চয় করতে পারে তবে স্তরগুলি পৃথক করার স্বার্থে এগুলি অন্য ফর্ম্যাটে ম্যাপিং করা কেবল অর্থহীন নয়, মডেলের নকল তৈরি করা এবং এটি উদ্দেশ্য নয়।
প্রথমত, ক্লিন আর্কিটেকচারটি একটি ভিন্ন সাধারণ পরিবেশ / দৃশ্যের কথা মাথায় রেখে তৈরি করা হয়েছিল। বহির্মথ বহিরাগত স্তরগুলির সাথে ব্যবসায় সার্ভার অ্যাপ্লিকেশনগুলির জন্য যার নিজস্ব ধরণের বিশেষ সামগ্রী প্রয়োজন need উদাহরণস্বরূপ ডাটাবেস যা আইটেমগুলি উত্পাদন SQLRow
করে এবং SQLTransactions
আইটেমগুলি আপডেট করার পরিবর্তে প্রয়োজন । আপনি যদি এই কেন্দ্রে ব্যবহার করেন তবে আপনাকে নির্ভরতার দিকটি লঙ্ঘন করতে হবে কারণ আপনার মূলটি ডাটাবেসের উপর নির্ভর করবে।
হালকা ওআরএম সহ যা সত্তা অবজেক্টগুলি লোড এবং সঞ্চয় করে তা কেস হয় না। তারা তাদের অভ্যন্তরীণ SQLRow
এবং আপনার ডোমেনের মধ্যে ম্যাপিং করে । এমনকি @Entitiy
আপনার ডোমেন অবজেক্টে যদি আপনার ওআরএম-এর কোনও টিকা দেওয়া দরকার হয় তবে আমি যুক্তি দেব যে এটি বাহ্যিক স্তরের "উল্লেখ" প্রতিষ্ঠা করে না। টীকাগুলি কেবল মেটাডেটা হওয়ায়, কোনও কোড যা বিশেষত তাদের জন্য সন্ধান করছে না সেগুলি সেগুলি দেখতে পাবে না। এবং আরও গুরুত্বপূর্ণ, আপনি যদি এগুলি অপসারণ করেন বা কোনও পৃথক ডাটাবেসের টীকা দিয়ে প্রতিস্থাপন করেন তবে কিছুই পরিবর্তন করার দরকার নেই।
বিপরীতে, আপনি যদি নিজের ডোমেন পরিবর্তন করেন এবং আপনি এই সমস্ত ম্যাপার তৈরি করেন তবে আপনাকে অনেক কিছু পরিবর্তন করতে হবে।
সংশোধন: উপরেরটি কিছুটা প্রশমিত করা হয়েছে এবং এটি ভুলও হতে পারে। কারণ পরিষ্কার আর্কিটেকচারের একটি অংশ রয়েছে যা আপনাকে প্রতি স্তর প্রতি উপস্থাপনা তৈরি করতে চায়। তবে সেটি দেখতে হবে আবেদনের প্রসঙ্গে।
যথা নীচে এখানে https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
গুরুত্বপূর্ণ বিষয় হ'ল বিচ্ছিন্ন, সরল, ডেটা স্ট্রাকচারগুলি সীমানা পেরিয়ে যায়। আমরা সংস্থা বা ডাটাবেস সারিগুলি প্রতারণা করতে এবং পাস করতে চাই না । আমরা চাই না যে ডেটা স্ট্রাকচারগুলিতে কোনও ধরনের নির্ভরতা থাকে যা নির্ভরতা বিধি লঙ্ঘন করে।
বাহ্যিক স্তরের দিকে কেন্দ্র থেকে সত্তাগুলি পাস করা নির্ভরতা বিধি লঙ্ঘন করে না, তবুও তাদের উল্লেখ রয়েছে। তবে এটি কল্পনাযুক্ত প্রয়োগের প্রসঙ্গে একটি কারণ রয়েছে। চারপাশে সত্তা পাস করা অ্যাপ্লিকেশন যুক্তি বাইরের দিকে সরানো হবে। বাহ্যিক স্তরগুলি কীভাবে অভ্যন্তরীণ বস্তুগুলির ব্যাখ্যা করতে হবে তা জানতে হবে, "ইউজ কেস" স্তরটির মতো অভ্যন্তরীণ স্তরগুলি যা করতে হবে তা কার্যকরভাবে করতে হবে।
তদতিরিক্ত, এটি স্তরগুলিও ডুপ্লুপ করে দেয় যাতে মূল পরিবর্তনে বাহ্যিক স্তরের পরিবর্তনগুলি প্রয়োজন হয় না (স্টিভালেকেন্ডারের মন্তব্য দেখুন)। সেই প্রসঙ্গে, এটি সহজেই বোঝা যায় যে কীভাবে অবজেক্টগুলি বিশেষভাবে তাদের উদ্দেশ্যে ব্যবহার করা উচিত তা উপস্থাপন করা উচিত। এছাড়াও স্তরগুলির একে অপরের সাথে অবজেক্টগুলির ক্ষেত্রে কথা বলা উচিত যা এই যোগাযোগের উদ্দেশ্যে তৈরি করা হয়। এটি এমনকি এটিরও অর্থ হতে পারে যে 3 টি উপস্থাপনা, প্রতিটি স্তরে 1, স্তরগুলির মধ্যে পরিবহণের জন্য 1 রয়েছে।
এবং এখানে https://blog.8thlight.com/uncle-bob/2011/11/22/Clean-Architecture.html যা উপরে ঠিকানাগুলি:
অন্যান্য লোকেরা উদ্বেগ প্রকাশ করেছেন যে আমার পরামর্শের নেট ফলাফলটি প্রচুর নকল কোড এবং সিস্টেমের স্তরগুলি জুড়ে একটি ডেটা কাঠামো থেকে অন্যটিতে প্রচুর পরিমাণে ডেটা অনুলিপি করা হবে। অবশ্যই আমি এটিও চাই না; এবং আমি প্রস্তাবিত কিছু কিছুই অনিবার্যভাবে ডেটা স্ট্রাকচারের পুনরাবৃত্তি এবং ক্ষেত্রের অনুলিপি তৈরি করতে উত্সাহিত করবে।
এই আইএমওটি বোঝায় যে প্লেইন 1: 1 টির অনুলিপিটি আর্কিটেকচারে গন্ধ কারণ আপনি প্রকৃতপক্ষে সঠিক স্তর এবং / বা বিমূর্ততা ব্যবহার করছেন না।
পরে তিনি ব্যাখ্যা করেছেন যে কীভাবে তিনি সমস্ত "অনুলিপি" কল্পনা করছেন
আপনি দু'জনের মধ্যে সাধারণ ডেটা স্ট্রাকচার পাস করে ব্যবসায়ের নিয়ম থেকে ইউআইকে আলাদা করুন। আপনি আপনার নিয়ন্ত্রকদের ব্যবসায়ের বিধি সম্পর্কে কিছু জানতে দেবেন না। পরিবর্তে, কন্ট্রোলাররা HTTPRequest অবজেক্টটিকে একটি সাধারণ ভ্যানিলা ডেটা স্ট্রাকচারে আনপ্যাক করে এবং তারপরে সেই ডেটা স্ট্রাকচারটিকে একটি ইন্টারঅ্যাক্টর অবজেক্টে পাস করে যা ব্যবসায়িক অবজেক্টগুলিকে অনুরোধ করে ব্যবহারের ক্ষেত্রে প্রয়োগ করে। ইন্টারেক্টর তারপরে প্রতিক্রিয়ার ডেটা অন্য ভ্যানিলা ডেটা স্ট্রাকচারে জড়ো করে এবং এটি ইউআইতে ফেরত দেয়। দর্শনগুলি ব্যবসায়িক বিষয়গুলি সম্পর্কে জানে না। তারা কেবল সেই ডেটা কাঠামোটি দেখে এবং প্রতিক্রিয়াটি উপস্থাপন করে।
এই অ্যাপ্লিকেশনটিতে উপস্থাপনার মধ্যে একটি বড় পার্থক্য রয়েছে। প্রবাহিত ডেটা কেবল সত্তা নয়। এবং এই ওয়ারেন্ট এবং বিভিন্ন শ্রেণীর দাবি।
তবে, ফটো ভিউয়ারের মতো একটি সাধারণ অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে প্রয়োগ করা হয়েছে যেখানে Photo
সত্তার প্রায় 0 টি ব্যবসায়িক নিয়ম রয়েছে এবং "ইউস কেস" যা তাদের সাথে সম্পর্কিত সেগুলি প্রায় অস্তিত্বহীন এবং প্রকৃতপক্ষে ক্যাচিং এবং ডাউনলোডিং সম্পর্কে আরও উদ্বিগ্ন (এই প্রক্রিয়াটি আইএমও হওয়া উচিত আরও স্পষ্টভাবে উপস্থাপিত), কোনও ছবির পৃথক উপস্থাপনা করার পয়েন্টটি বিলুপ্ত হতে শুরু করে। এমনকি আমি অনুভূতিটি পেয়েছি যে আসল ব্যবসা-যুক্তি-কোর-স্তরটি অনুপস্থিত থাকা অবস্থায় ফটো নিজেই ডেটা স্থানান্তর বস্তু।
সেখানে মধ্যে একটি পার্থক্য আছে "দুই মধ্যে সহজ ডাটা স্ট্রাকচার ক্ষণস্থায়ী মাধ্যমে ব্যবসার নিয়ম থেকে UI 'তে আলাদা" এবং "আপনি একটি ছবির পুনঃনামকরণ এটা 3 পথে বার প্রদর্শন করাতে চান যখন" ।
তদ্ব্যতীত, আমি যেখানে এই ডেমো অ্যাপ্লিকেশনগুলি পরিষ্কার আর্কিটেকচারের প্রতিনিধিত্ব করতে ব্যর্থ দেখতে পাচ্ছি তা হ'ল স্তরগুলি পৃথক করার স্বার্থে স্তরগুলি পৃথক করার উপর তারা প্রচুর জোর দেয় তবে অ্যাপ্লিকেশনটি কী কার্যকরভাবে আড়াল করে। এটি https://blog.8thlight.com/uncle-bob/2011/09/30/Screaming- আর্কিটেকচার html - এ যা বলা হয়েছে তার বিপরীতে name
কোনও সফ্টওয়্যার অ্যাপ্লিকেশনটির আর্কিটেকচার অ্যাপ্লিকেশনটির ব্যবহারের ক্ষেত্রে চিৎকার করে
পরিষ্কার আর্কিটেকচারে স্তরগুলি পৃথক করার উপর আমি সেই জোর দেখছি না। এটি নির্ভরতার দিকনির্দেশনা এবং বাইরের দিকে নির্ভরতা ছাড়াই আদর্শভাবে সরল জাভাতে - অ্যাপ্লিকেশনটির মূল প্রতিনিধিত্ব - সত্তা এবং ব্যবহারের কেসগুলির প্রতি দৃষ্টি নিবদ্ধ করা সম্পর্কিত। এটি মূলের দিকে নির্ভরতা সম্পর্কে এতটা নয়।
সুতরাং যদি আপনার অ্যাপ্লিকেশনটিতে আসলে এমন একটি কোর থাকে যা ব্যবসায়ের নিয়মগুলি উপস্থাপন করে এবং কেসগুলি ব্যবহার করে এবং / অথবা বিভিন্ন ব্যক্তি বিভিন্ন স্তরগুলিতে কাজ করে তবে দয়া করে এগুলি পছন্দ মতো আলাদা করুন। আপনি যদি অন্যদিকে কেবল একটি সাধারণ অ্যাপ্লিকেশন লিখে থাকেন তবে নিজেরাই এটি অতিরিক্ত করবেন না। সাবলীল সীমানা সহ 2 টি স্তর পর্যাপ্ত পরিমাণের চেয়ে বেশি হতে পারে। এবং স্তরগুলি পরে যুক্ত করা যেতে পারে।
BankAccount
তবে অ্যাপ্লিকেশন সুনির্দিষ্ট নিয়ম সহ আপনি সেই অ্যাকাউন্টটি দিয়ে কী করতে পারেন।