के साथ सहायता मैं हेड फर्स्ट डिज़ाइन पैटर्न (हाल ही में आया था) के माध्यम से जा रहा हूं और मैं रणनीति पैटर्न के बारे में पढ़ रहा था, और यह मेरे लिए हुआ कि यह एक सामान्य तरीका लागू करने का एक शानदार तरीका हो सकता है काम पर उपयोग की जाने वाली सभी विशेष वस्तुओं पर करों की गणना आदि। लेकिन मुझे इसके बारे में एक सवाल था।रणनीति पैटर्न
यहाँ मैं क्या सोच रहा था:
public interface ITax
{
decimal ProvincialTaxRate { get; set; } // Yes, I'm Canadian :)
decimal CalculateTax(decimal subtotal);
}
public SaskatchewanTax
{
public decimal ProvincialTaxRate { get; set; }
public SaskatchewanTax()
{
ProvincialTaxRate = new decimal(0.05f);
}
public decimal CalculateTax(subtotal)
{
return ProvincialTaxRate * subtotal + FederalTaxRate * subtotal;
}
}
public OntarioTax
{
public decimal ProvincialTaxRate { get; set; }
public OntarioTax()
{
ProvincialTaxRate = new decimal(0.08f);
}
public decimal CalculateTax(decimal subtotal)
{
return ProvincialTaxRate * subtotal + FederalTaxRate * subtotal;
}
}
आपने ध्यान दिया होगा FederalTaxRate का कोई घोषणा नहीं है और वह है क्या मैं पूछने के लिए चाहता था। उसे कहाँ जाना चाहिए?
- प्रत्येक ठोस आईटीएक्स के लिए इसे कन्स्ट्रक्टर में पास करना अनावश्यक लगता है और गलत व्यवहार की अनुमति देगा (सभी कर कैलकुलेटर को समान संघीय कर दर को साझा करना होगा)।
- इसी तरह, आईटीएक्स के सदस्य को बनाने से उन्हें असंगत होने की अनुमति मिल जाएगी।
क्या सभी टैक्स कैलकुलेटर किसी अन्य वर्ग से प्राप्त होते हैं जहां इसे स्थिर रूप से और आईटीएक्स परिभाषित किया जाता है? एक आधार वर्ग कि कनाडा की संघीय फैक्स जिस दर से अपने व्युत्पन्न वर्ग के सभी वारिस कर सकते हैं बना सकते हैं -
public class TaxCalculator
{
public static decimal FederalTaxRate = new decimal(0.05f);
}
यह सच हो सकता है, लेकिन यह अभी भी प्रश्न का उत्तर नहीं देता है या मेरे 'मजेदार' बनाने के अलावा मुझे कोई भी उपयोग प्रदान नहीं करता है। –
इस टिप्पणी का जवाब देने के लिए संपादित किया गया^ –
चूंकि ऐसा लगता है कि आप इन पैटर्न को सीख रहे हैं, आपको व्यक्तिगत हमले के रूप में किसी की आलोचना नहीं लेनी चाहिए। आप पहले इन नए पैटर्न का उपयोग करने के हर अवसर की तलाश करेंगे, और कभी-कभी आप उनका दुरुपयोग करेंगे क्योंकि इस प्रतिक्रिया का उल्लेख है। सीखने की प्रक्रिया का सभी हिस्सा। –