डीएसएल मूल रूप से एक विशिष्ट डोमेन समस्या को हल करने के लिए अपना स्वयं का छोटा उपन्यास बना रहा है। यह विधि श्रृंखला का उपयोग कर हल किया जाता है। भाषाएं जहां डॉट्स और कोष्ठक वैकल्पिक सहायता हैं, इन अभिव्यक्तियों को और अधिक प्राकृतिक लगते हैं। यह एक निर्माता पैटर्न के समान भी हो सकता है। डीएसएल भाषाएं स्वयं नहीं हैं, बल्कि कॉल करने के लिए आपके एपीआई पर लागू एक पैटर्न है जो अधिक आत्म व्याख्यात्मक है।
एक उदाहरण गुइस है, Guice Users Guide http://docs.google.com/View?docid=dd2fhx4z_5df5hw8 में कुछ विवरण नीचे दिए गए हैं कि कैसे इंटरफेस कार्यान्वयन के लिए बाध्य हैं, और किस संदर्भ में।
एक और आम उदाहरण क्वेरी भाषाओं के लिए है। उदाहरण के लिए:
NewsDAO.writtenBy("someUser").before("someDate").updateStatus("Deleted")
कार्यान्वयन में, लौटने या तो एक नया क्वेरी वस्तु, या बस यह अपने आप में आंतरिक रूप से अद्यतन करने के लिए प्रत्येक विधि कल्पना। किसी भी बिंदु पर आप पंक्तियों() के लिए सभी पंक्तियों को प्राप्त करने के लिए श्रृंखला का उपयोग कर श्रृंखला को समाप्त कर सकते हैं, या अपडेट सोमफिल्ड जैसा कि मैंने यहां किया है। दोनों परिणाम वस्तु वापस कर देंगे।
मैं उपरोक्त गुइस उदाहरण पर भी एक नज़र डालने की सिफारिश करता हूं, क्योंकि प्रत्येक कॉल पर नए विकल्प के साथ एक नया प्रकार आता है। एक अच्छा आईडीई आपको पूरा करने की अनुमति देगा, जिससे यह स्पष्ट हो जाएगा कि प्रत्येक बिंदु पर आपके पास कौन से विकल्प हैं।
संपादित करें: ऐसा लगता है कि कई लोग डीएसएल को अपने स्वयं के पार्सर्स के साथ नई, सरल, एकल उद्देश्य भाषाओं के रूप में देखते हैं। मैं हमेशा संचालन व्यक्त करने के लिए एक सम्मेलन के रूप में विधि श्रृंखला का उपयोग करने के रूप में डीएसएल को जोड़ता हूं।
लेकिन आप वास्तव में है गैर तकनीकी लोगों की है कि कर सकते हैं? – BobbyShaftoe
शायद उन्हें अलग-अलग तकनीकी रूप से वर्णित करना बेहतर है; वे निजीकरण जीते हैं, जावा कोडर नहीं। –
आशा है कि आप जानते हैं कि आपका डीएसएल पायथन है। –