के बाहर तत्काल निकालने से कैसे रखा जाए मेरे पास एक फैक्ट्री है। मैं कक्षाओं को अनुमति नहीं देना चाहता हूं कि इस फैक्ट्री को कारखाने के बाहर तुरंत चालू किया जाए। अगर मैं उन्हें अमूर्त, स्थैतिक बना देता हूं, या उन्हें निजी रचनाकार देता हूं तो वे बिल्कुल तत्काल नहीं होंगे! क्या यह एक भाषा प्रतिबंध है या क्या?एक वर्ग को फैक्टरी
मैं कोड के इस
var awcrap = new Extrude2013(); // BAD !!!
awcrap.extrudify(); // I don't want to allow this
बाकी अनुमति देने के लिए नहीं करना चाहती:
using System;
namespace testie
{
public enum ExtrudeType { Extrude2013, Extrude2014 }
public interface IExtrudeStuff {
void extrudify();
}
public class Extrude2013 : IExtrudeStuff {
public void extrudify(){
Console.WriteLine ("extrudify 2013");
}
}
public class Extrude2014 : IExtrudeStuff {
public void extrudify(){
Console.WriteLine ("extrudify 2014");
}
}
public static class ExtrudeFactory {
public static IExtrudeStuff Create(ExtrudeType t) {
switch (t) {
case ExtrudeType.Extrude2013: return new Extrude2013();
case ExtrudeType.Extrude2014: return new Extrude2014();
default: return null;
}
}
}
class MainClass {
public static void Main (string[] args) {
// Now for the pretty API part
var o = ExtrudeFactory.Create (ExtrudeType.Extrude2013);
o.extrudify();
var p = ExtrudeFactory.Create (ExtrudeType.Extrude2014);
p.extrudify();
var awcrap = new Extrude2013(); // BAD !!!
awcrap.extrudify(); // I don't want to allow this
}
}
}
यह संभव नहीं है। 'नया 'कीवर्ड तत्काल अनुमति देगा। –
क्यों न केवल उन्हें फैक्ट्री क्लास के अंदर निजी नेस्टेड कक्षाएं बनाते हैं? –
क्या आप आंतरिक खोज रहे हैं? –