উত্তর:
আপনি উইকিপিডিয়ায় অনেকগুলি নকশার নিদর্শনগুলির একটি ওভারভিউ খুঁজে পেতে পারেন । এটি জিওএফ দ্বারা কোন নিদর্শনগুলির উল্লেখ রয়েছে তাও উল্লেখ করে। আমি সেগুলি এখানে সংক্ষিপ্ত করব এবং জাভা এসই এবং জাভা ইই এপিআই, উভয়ই পাওয়া যায় যতটা সম্ভব প্যাটার্ন বাস্তবায়ন বরাদ্দ করার চেষ্টা করব।
javax.xml.parsers.DocumentBuilderFactory#newInstance()
javax.xml.transform.TransformerFactory#newInstance()
javax.xml.xpath.XPathFactory#newInstance()
java.lang.StringBuilder#append()
(Unsynchronized)java.lang.StringBuffer#append()
(সিঙ্ক্রোনাইজ)java.nio.ByteBuffer#put()
(এছাড়াও উপর CharBuffer
, ShortBuffer
, IntBuffer
, LongBuffer
, FloatBuffer
এবং DoubleBuffer
)javax.swing.GroupLayout.Group#addComponent()
java.lang.Appendable
java.util.stream.Stream.Builder
java.util.Calendar#getInstance()
java.util.ResourceBundle#getBundle()
java.text.NumberFormat#getInstance()
java.nio.charset.Charset#forName()
java.net.URLStreamHandlerFactory#createURLStreamHandler(String)
(প্রতি প্রোটোকল একক বস্তু ফেরত দেয়)java.util.EnumSet#of()
javax.xml.bind.JAXBContext#createMarshaller()
এবং অন্যান্য অনুরূপ পদ্ধতিjava.lang.Object#clone()
(ক্লাসটি বাস্তবায়ন করতে হবে java.lang.Cloneable
)java.util.Arrays#asList()
java.util.Collections#list()
java.util.Collections#enumeration()
java.io.InputStreamReader(InputStream)
(একটি ফেরত Reader
)java.io.OutputStreamWriter(OutputStream)
(একটি ফেরত Writer
)javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
এবং #unmarshal()
new LinkedHashMap(LinkedHashSet<K>, List<V>)
যা একটি অবিশ্বাস্য লিঙ্কযুক্ত মানচিত্র দেয় যা আইটেমগুলি ক্লোন করে না, তবে সেগুলি ব্যবহার করে। java.util.Collections#newSetFromMap()
এবং singletonXXX()
পদ্ধতি তবে বন্ধ আসে।java.awt.Container#add(Component)
(বাস্তবিকভাবে পুরো সুইং এইভাবে)javax.faces.component.UIComponent#getChildren()
(কার্যতঃ সমস্ত জেএসএফ ইউআই জুড়ে)java.io.InputStream
, OutputStream
, Reader
এবং Writer
একটি কন্সট্রাকটর একই ধরণের একটি দৃষ্টান্ত গ্রহণ আছে।java.util.Collections
, checkedXXX()
, synchronizedXXX()
এবং unmodifiableXXX()
পদ্ধতি।javax.servlet.http.HttpServletRequestWrapper
এবং HttpServletResponseWrapper
javax.swing.JScrollPane
javax.faces.context.FacesContext
, এটা অভ্যন্তরীণভাবে বিমূর্ত / ইন্টারফেস সংঙ্ক্রান্ত ধরনের অন্যান্যের মধ্যে ব্যবহার LifeCycle
, ViewHandler
, NavigationHandler
enduser এটি সম্পর্কে চিন্তা করবেন না (যা ইনজেকশন দ্বারা কিন্তু overrideable হয়) করা হয়েছে যে ছাড়া এবং আরো অনেক।javax.faces.context.ExternalContext
, যা অভ্যন্তরীণভাবে ব্যবহার ServletContext
, HttpSession
, HttpServletRequest
, HttpServletResponse
, ইত্যাদিjava.lang.Integer#valueOf(int)
(এছাড়াও উপর Boolean
, Byte
, Character
, Short
, Long
এবং BigDecimal
)java.lang.reflect.Proxy
java.rmi.*
javax.ejb.EJB
( এখানে ব্যাখ্যা )javax.inject.Inject
( এখানে ব্যাখ্যা )javax.persistence.PersistenceContext
java.lang.Runnable
javax.swing.Action
java.util.Pattern
java.text.Normalizer
java.text.Format
javax.el.ELResolver
java.util.Iterator
(এইভাবে অন্যদের মধ্যেও java.util.Scanner
!)।java.util.Enumeration
java.util.Timer
(সমস্ত scheduleXXX()
পদ্ধতি)java.util.concurrent.Executor#execute()
java.util.concurrent.ExecutorService
( invokeXXX()
এবং submit()
পদ্ধতি)java.util.concurrent.ScheduledExecutorService
(সমস্ত scheduleXXX()
পদ্ধতি)java.lang.reflect.Method#invoke()
java.util.Date
(সেটার পদ্ধতিগুলি এমনটি করে Date
যা অভ্যন্তরীণভাবে একটি long
মান দ্বারা উপস্থাপিত হয়)java.io.Serializable
javax.faces.component.StateHolder
java.util.Observer
/ java.util.Observable
(যদিও সত্যিকারের বিশ্বে খুব কমই ব্যবহৃত হয়)java.util.EventListener
(প্রায় পুরোপুরি এইভাবে সুইং করুন)javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener
javax.faces.lifecycle.LifeCycle#execute()
(এর দ্বারা নিয়ন্ত্রিত FacesServlet
, আচরণটি জেএসএফ লাইফসাইকের বর্তমান পর্যায়ে (রাজ্য) এর উপর নির্ভরশীল)java.util.Comparator#compare()
, অন্যদের দ্বারা মৃত্যুদন্ড কার্যকর করা Collections#sort()
।javax.servlet.http.HttpServlet
, service()
এবং সমস্ত doXXX()
পদ্ধতি গ্রহণ করে HttpServletRequest
এবং HttpServletResponse
প্রয়োগকারীকে তাদের প্রক্রিয়া করতে হয় (এবং উদাহরণের ভেরিয়েবল হিসাবে ধরে রাখতে না!)।javax.servlet.Filter#doFilter()
java.io.InputStream
, java.io.OutputStream
, java.io.Reader
এবং java.io.Writer
।java.util.AbstractList
, java.util.AbstractSet
এবং java.util.AbstractMap
।javax.servlet.http.HttpServlet
, doXXX()
ডিফল্টরূপে সমস্ত পদ্ধতি প্রতিক্রিয়াতে একটি HTTP 405 "অনুমোদিত নয়" পদ্ধতিটি ত্রুটি প্রেরণ করে। আপনি তাদের কোনওটিই প্রয়োগ করতে পারবেন না।Observable
, Observer
)ContainerAdapter
, ComponentAdapter
, FocusAdapter
, KeyAdapter
, MouseAdapter
হয় না অ্যাডাপ্টার; এগুলি আসলে নুল অবজেক্টস। সান দ্বারা নামকরণের দরিদ্র পছন্দBufferedInputStream
সাজসজ্জার প্যাটার্ন ( যেমন অন্যান্য স্ট্রিম সাজাইয়া দিতে পারেন FilterInputStream
)java.lang.Runtime#getRuntime()
সিঙ্গলটনButtonGroup
মধ্যস্থতা প্যাটার্ন জন্যAction
, AbstractAction
একই কোড -> কমান্ড প্যাটার্ন সম্পাদন করতে বিভিন্ন ভিজ্যুয়াল উপস্থাপনার জন্য ব্যবহার করা যেতে পারেএবং আরও অনেক কিছু আমি অনুমান করি
clone()
এই উদ্দেশ্যে ব্যবহার করা যেতে পারে।java.awt
এবং java.swing
প্যাকেজ। প্রকৃতপক্ষে, তারা প্রায় অভিন্ন আন্তঃজাতীয় বৈশিষ্ট্যগুলি ভাগ করে এবং বহিরাগত বৈশিষ্ট্যগুলি বিভিন্ন ইউআই উপাদান যা তারা ইউআই আকারে রাখে।
আরএমআই প্রক্সি ভিত্তিক।
GoF এ 23 টি ধরণের বেশিরভাগের জন্য একটিকে উদ্ধৃত করা সম্ভব হবে:
আমি 23 এর মধ্যে 10 এর জন্য জাভাতে উদাহরণগুলি ভাবতে পারি না, তবে আমি আগামীকাল আরও ভাল করতে পারি কিনা তা আমি দেখতে পাচ্ছি। এডিট এর জন্য।
বিমূর্ত কারখানার প্যাটার্ন বিভিন্ন জায়গায় ব্যবহৃত হয়। যেমন, , ।DatagramSocketImplFactory
PreferencesFactory
আরও অনেক রয়েছে --- ইন্টারফেসের জন্য জাভাডোক অনুসন্ধান করুন যার নামে "কারখানা" শব্দ রয়েছে।
কারখানার প্যাটার্নের বেশ কয়েকটি উদাহরণও রয়েছে।
যদিও আমি এটির সাথে একটি ভাঙা ঘড়ির মতো সাজিয়েছি, জাভা এক্সএমএল এপিআই ফ্যাক্টরিটি প্রচুর ব্যবহার করে। আমি বলতে চাইছি শুধু এটি দেখুন:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(source);
String title = XPathFactory.newInstance().newXPath().evaluate("//title", doc);
...এবং তাই এবং তাই ঘোষণা.
অতিরিক্তভাবে বিভিন্ন বাফার (স্ট্রিংবাফার, বাইটবফার, স্ট্রিংবুডার) বিল্ডার ব্যবহার করে।
java.util. Colલેક્શન # আইট্রেটার একটি কারখানা পদ্ধতির একটি ভাল উদাহরণ। আপনার ব্যবহৃত সংগ্রহের কংক্রিট সাবক্লাসের উপর নির্ভর করে এটি একটি আইট্রেটার বাস্তবায়ন তৈরি করবে। কারখানা কারখানা সুপারক্লাস (সংগ্রহ) এবং তৈরি করা আইট্রেটার উভয়ই ইন্টারফেস হয়, এটি কখনও কখনও অ্যাবস্ট্রাকফ্যাক্টরিতে বিভ্রান্ত হয়। গৃহীত উত্তরে (বালুসসি) অ্যাবস্ট্র্যাক্ট ফ্যাক্টরির বেশিরভাগ উদাহরণ হ'ল ফ্যাক্টরির উদাহরণ , কারখানা পদ্ধতির একটি সরল সংস্করণ, যা মূল জিওএফ নিদর্শনগুলির অংশ নয়। ফ্যাকোরিতে কারখানার শ্রেণিবিন্যাস ভেঙে ফ্যাক্টরিটি পণ্যটি ফেরত দেওয়ার জন্য চয়ন করার জন্য অন্যান্য উপায় ব্যবহার করে।
একটি বিমূর্ত কারখানায় একাধিক কারখানার পদ্ধতি রয়েছে, যার প্রতিটি আলাদা পণ্য তৈরি করে। একটি কারখানার দ্বারা উত্পাদিত পণ্যগুলি একসাথে ব্যবহারের উদ্দেশ্যে হয় (আপনার প্রিন্টার এবং কার্তুজগুলি একই (বিমূর্ত) কারখানার থেকে ভাল হতে পারে)। প্ল্যাটফর্ম থেকে প্ল্যাটফর্মের থেকে পৃথক করে এডাব্লুটি জিইউআই উপাদানগুলির পরিবারগুলির উপরে বর্ণিত উত্তরগুলির উদাহরণ (যদিও এটির প্রয়োগটি গোফে বর্ণিত কাঠামোর চেয়ে পৃথক)।
javax.lang.model.element
দর্শক সংজ্ঞায়িত;) আমি পুরোপুরি নিশ্চিত কিনা নইdoXXX
এবংdoFilter
"কৌশল" হয়।