उपयोग-मामले लागू करना (इंटरैक्टर)
ऐसे उपयोग-मामले विकसित करें जो विशिष्ट अनुप्रयोग सुविधाएँ प्राप्त करने के लिए एंटिटीज़ का समन्वय करें और अनुप्रयोग-विशिष्ट व्यावसायिक नियमों को साकार करें।
उपयोग-मामले लागू करना (इंटरैक्टर), CoddyKit पर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
उपयोग-प्रकरण (इंटरैक्टर) क्या हैं?
स्वच्छ वास्तुकला में उपयोग-प्रकरण (जिन्हें कभी-कभी इंटरैक्टर भी कहा जाता है) आपके अनुप्रयोग के तर्क के केंद्र में होते हैं। वे उन विशिष्ट कार्यों या सुविधाओं का प्रतिनिधित्व करते हैं जिन्हें आपका अनुप्रयोग कर सकता है।
उन्हें अपनी मुख्य व्यावसायिक इकाइयों के समन्वयकों के रूप में समझें। वे परिभाषित करते हैं कि किसी लक्ष्य को प्राप्त करने के लिए आपका अनुप्रयोग उन इकाइयों का कैसे उपयोग करता है, जैसे 'नया उपयोगकर्ता बनाना' या 'ऑर्डर संसाधित करना'।
स्वच्छ वास्तुकला में उपयोग-प्रकरणों की भूमिका
उपयोग-प्रकरण 'उपयोग-प्रकरण' परत में, 'इकाइयाँ' परत के ठीक बाहर स्थित होते हैं। इसका अर्थ है:
- वे इकाइयों पर निर्भर होते हैं।
- वे यूज़र इंटरफ़ेस, डेटाबेस या वेब रूपरेखाओं जैसी बाहरी परतों पर निर्भर नहीं होते।
उनका मुख्य कार्य इकाइयों तक और उनसे डेटा के प्रवाह का समन्वय करना तथा इकाइयों को उनके विशिष्ट व्यावसायिक नियम लागू करने का निर्देश देना है।
अनुप्रयोग नियमों को समाहित करना
जहाँ इकाइयाँ पूरे व्यवसाय पर लागू होने वाले व्यावसायिक नियम रखती हैं, वहीं उपयोग-प्रकरण अनुप्रयोग-विशिष्ट व्यावसायिक नियमों को समाहित करते हैं।
उदाहरण के लिए, 'ऑर्डर' इकाई में यह नियम हो सकता है कि ऑर्डर का कुल योग ऋणात्मक नहीं हो सकता। 'ऑर्डर संसाधित करें' उपयोग-प्रकरण में यह अनुप्रयोग नियम हो सकता है कि ऑर्डर देने के लिए उपयोगकर्ता का प्रवेश किया हुआ होना आवश्यक है या भुगतान के समय कुछ प्रचार लागू किए जाएँ।
उपयोग-प्रकरण की सीमाएँ परिभाषित करना
उपयोग-प्रकरणों को अलग-थलग रखने के लिए वे इंटरफ़ेस के माध्यम से बाहरी दुनिया से संवाद करते हैं:
- इनपुट पोर्ट: यह परिभाषित करने वाला इंटरफ़ेस कि उपयोग-प्रकरण को कौन-सा डेटा प्राप्त होने की अपेक्षा है।
- आउटपुट पोर्ट: यह परिभाषित करने वाला इंटरफ़ेस कि उपयोग-प्रकरण कौन-सा डेटा तैयार करेगा।
ये पोर्ट सुनिश्चित करते हैं कि उपयोग-प्रकरण को विशिष्ट यूज़र इंटरफ़ेस घटकों या डेटाबेस कार्यान्वयनों की जानकारी न हो।
उपयोग-प्रकरण की संरचना
एक सामान्य उपयोग-प्रकरण एक ऐसी क्लास होती है जिसमें एक सार्वजनिक विधि होती है (जैसे execute या handle)। यह विधि आमतौर पर 'इनपुट डेटा स्थानांतरण ऑब्जेक्ट' (DTO) लेती है और 'आउटपुट DTO' लौटाती है।
इसके भीतर यह इकाइयों के साथ काम करती है और अक्सर डेटा भंडारण या बाहरी सेवाओं से संवाद करने के लिए 'गेटवे' या 'रिपॉज़िटरी' इंटरफ़ेस का उपयोग करती है, बिना उनके ठोस कार्यान्वयन को जाने।
उदाहरण: उपयोगकर्ता बनाने का उपयोग-प्रकरण
आइए CreateUserUseCase पर विचार करें। पहले, हम इनपुट और आउटपुट के लिए सरल डेटा संरचनाएँ परिभाषित करते हैं। ये सामान्य Java ऑब्जेक्ट (POJO) होते हैं।
public class CreateUserInput {
public String name;
public String email;
}
public class CreateUserOutput {
public String userId;
public String message;
public boolean success;
}तर्क का कार्यान्वयन
अब देखते हैं कि CreateUserUseCase अपने कार्य को पूरा करने के लिए User इकाई का समन्वय कैसे करता है और UserRepository (एक इंटरफ़ेस) के साथ कैसे काम करता है।
इस उदाहरण को चलाकर देखें:
public class User {
private String id;
private String name;
private String email;
public User(String id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public String getId() { return id; }
public String getName() { return name; }
public String getEmail() { return email; }
public boolean isValid() { return name != null && !name.isEmpty() && email != null && email.contains("@"); }
}
interface IUserRepository {
void save(User user);
String generateId();
}
class InMemoryUserRepository implements IUserRepository {
@Override
public void save(User user) {
System.out.println("Saving user: " + user.getName() + " with ID: " + user.getId());
}
@Override
public String generateId() {
return "user-" + System.currentTimeMillis();
}
}
public class CreateUserInput {
public String name;
public String email;
}
public class CreateUserOutput {
public String userId;
public String message;
public boolean success;
}
class CreateUserUseCase {
private final IUserRepository userRepository;
public CreateUserUseCase(IUserRepository userRepository) {
this.userRepository = userRepository;
}
public CreateUserOutput execute(CreateUserInput input) {
CreateUserOutput output = new CreateUserOutput();
if (input.name == null || input.name.isEmpty()) {
output.success = false;
output.message = "Name cannot be empty.";
return output;
}
if (input.email == null || !input.email.contains("@")) {
output.success = false;
output.message = "Invalid email address.";
return output;
}
String newId = userRepository.generateId();
User newUser = new User(newId, input.name, input.email);
if (!newUser.isValid()) {
output.success = false;
output.message = "User data is invalid.";
return output;
}
userRepository.save(newUser);
output.success = true;
output.userId = newId;
output.message = "User created successfully.";
return output;
}
}
public class Main {
public static void main(String[] args) {
IUserRepository repo = new InMemoryUserRepository();
CreateUserUseCase useCase = new CreateUserUseCase(repo);
CreateUserInput input = new CreateUserInput();
input.name = "Alice";
input.email = "alice@example.com";
CreateUserOutput output = useCase.execute(input);
if (output.success) {
System.out.println("Result: " + output.message + " ID: " + output.userId);
} else {
System.out.println("Error: " + output.message);
}
// Test with invalid input
CreateUserInput invalidInput = new CreateUserInput();
invalidInput.name = "";
invalidInput.email = "invalid";
CreateUserOutput errorOutput = useCase.execute(invalidInput);
System.out.println("Error test: " + errorOutput.message);
}
}उपयोग-प्रकरणों के लाभ
उपयोग-प्रकरणों का उपयोग आपके सॉफ़्टवेयर अभिकल्पन में महत्वपूर्ण लाभ लाता है:
- अलगाव: अनुप्रयोग-विशिष्ट तर्क यूज़र इंटरफ़ेस, डेटाबेस और रूपरेखाओं से अलग रहता है।
- परीक्षण-योग्यता: यूज़र इंटरफ़ेस या डेटाबेस कनेक्शन की आवश्यकता के बिना उपयोग-प्रकरणों का अलग से आसानी से परीक्षण किया जा सकता है।
- स्वतंत्रता: यूज़र इंटरफ़ेस या डेटाबेस तकनीक में बदलाव का आपके मुख्य अनुप्रयोग तर्क पर सीधा प्रभाव नहीं पड़ेगा।
- स्पष्टता: प्रत्येक उपयोग-प्रकरण अनुप्रयोग की एकल सुविधा या कार्य को स्पष्ट रूप से परिभाषित करता है।
उपयोग-प्रकरण के साथ संवाद का प्रवाह
जब कोई उपयोगकर्ता आपके अनुप्रयोग के साथ संवाद करता है, तो उपयोग-प्रकरण से जुड़ा सरल प्रवाह इस प्रकार होता है:
- यूज़र इंटरफ़ेस/नियंत्रक: अनुरोध प्राप्त करता है (जैसे बटन दबाना)।
- इनपुट पोर्ट: नियंत्रक अनुरोध को उपयोग-प्रकरण के लिए एक विशिष्ट इनपुट प्रारूप में बदलता है।
- उपयोग-प्रकरण: इकाइयों का समन्वय करते हुए और रिपॉज़िटरी/गेटवे के साथ काम करते हुए अपना तर्क निष्पादित करता है।
- आउटपुट पोर्ट: उपयोग-प्रकरण अपना परिणाम एक सामान्य आउटपुट प्रारूप में देता है।
- प्रस्तुतकर्ता/यूज़र इंटरफ़ेस: उपयोग-प्रकरण के आउटपुट को उपयोगकर्ता को दिखाए जा सकने वाले रूप में बदलता है।
यह प्रवाह सरोकारों का स्पष्ट पृथक्करण सुनिश्चित करता है।
त्वरित जाँच: उपयोग-प्रकरण की भूमिका
अब तक आपने जो सीखा है, उसके आधार पर स्वच्छ वास्तुकला में उपयोग-प्रकरण (इंटरैक्टर) की मुख्य भूमिका क्या है?
पुनरावलोकन: कार्रवाइयों का समन्वय
अब आपने स्वच्छ वास्तुकला में अनुप्रयोग-विशिष्ट समन्वयकों, उपयोग-प्रकरणों के बारे में सीखा है। वे आपके ऐप की सुविधाएँ परिभाषित करते हैं, इकाइयों का समन्वय करते हैं और अनुप्रयोग-विशिष्ट व्यावसायिक नियमों को समाहित करते हैं।
इनपुट और आउटपुट पोर्ट का उपयोग करके उपयोग-प्रकरण बाहरी परतों से स्वतंत्र रहते हैं। इससे आपका मुख्य तर्क आसानी से परीक्षण योग्य, रखरखाव योग्य और बदलाव के लिए लचीला बनता है। मज़बूत और अनुकूलनीय सॉफ़्टवेयर प्रणालियाँ बनाने की दिशा में यह एक महत्वपूर्ण कदम है!
एआई शिक्षक के साथ व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “उपयोग-मामले लागू करना (इंटरैक्टर)” पाठ निःशुल्क है?
हाँ—“उपयोग-मामले लागू करना (इंटरैक्टर)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“उपयोग-मामले लागू करना (इंटरैक्टर)” में मैं क्या सीखूँगा?
ऐसे उपयोग-मामले विकसित करें जो विशिष्ट अनुप्रयोग सुविधाएँ प्राप्त करने के लिए एंटिटीज़ का समन्वय करें और अनुप्रयोग-विशिष्ट व्यावसायिक नियमों को साकार करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“उपयोग-मामले लागू करना (इंटरैक्टर)” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- व्यावसायिक एंटिटीज़ डिज़ाइन करना
- उपयोग-मामले लागू करना (इंटरैक्टर)
- इनपुट और आउटपुट पोर्ट
- इनवेरिएंट के साथ व्यावसायिक नियम लागू करना