স্ট্যাটিক ক্লাসগুলি যা সত্যই স্থির হয় তাতে কোনও ভুল নেই । এটি বলার অপেক্ষা রাখে না যে এর অভ্যন্তরীণ রাষ্ট্রের কথা বলার পদ্ধতিগুলির আউটপুট পরিবর্তনের কারণ হতে পারে।
যদি Dice.roll()
সহজেই 1 থেকে 6 এ কোনও নতুন এলোমেলো সংখ্যা ফিরে আসে, তবে এটি রাষ্ট্রের পরিবর্তন করছে না। মঞ্জুর, আপনি একটি Random
উদাহরণ ভাগ করে নিতে পারেন , তবে আমি বিবেচনা করব না যে সংজ্ঞা অনুযায়ী রাষ্ট্রের পরিবর্তন, আউটপুটটি সর্বদা ভাল, এলোমেলো হতে চলেছে। এটি থ্রেড-নিরাপদ তাই এখানে কোনও সমস্যা নেই।
আপনি প্রায়শই চূড়ান্ত "সহায়ক" বা অন্যান্য ইউটিলিটি ক্লাস দেখতে পাবেন যার একটি ব্যক্তিগত নির্মাণকারী এবং স্থির সদস্য রয়েছে। প্রাইভেট কনস্ট্রাক্টরটিতে কোনও যুক্তি নেই এবং কেবল কাউকে ক্লাস ইনস্ট্যান্ট করতে বাধা দেওয়ার জন্য পরিবেশন করা হয়েছে। চূড়ান্ত সংশোধকটি কেবল এই ধারণাটি বাড়িতে নিয়ে আসে যে এটি এমন কোনও শ্রেণীর নয় যা আপনি কখনও অর্জন করতে চান। এটি নিছক একটি ইউটিলিটি শ্রেণি। যদি সঠিকভাবে সম্পন্ন করা হয় তবে এমন কোনও সিঙ্গলটন বা অন্য শ্রেণীর সদস্য থাকা উচিত নয় যা নিজেরাই স্থির এবং চূড়ান্ত নয়।
এতক্ষণ আপনি এই নির্দেশিকাগুলি অনুসরণ করেন এবং আপনি সিলেটলেট বানাচ্ছেন না, এতে একেবারেই কোনও ভুল নেই। আপনি একটি নিয়ামক শ্রেণীর কথা উল্লেখ করেছেন এবং এর জন্য অবশ্যই অবশ্যই রাষ্ট্রীয় পরিবর্তনের প্রয়োজন হবে , সুতরাং আমি কেবল স্থির পদ্ধতি ব্যবহারের বিরুদ্ধে পরামর্শ দেব would আপনি একটি স্ট্যাটিক ইউটিলিটি ক্লাসের উপর প্রচুর নির্ভর করতে পারেন, তবে আপনি এটি স্ট্যাটিক ইউটিলিটি ক্লাস করতে পারবেন না ।
কোন শ্রেণীর জন্য রাষ্ট্রের পরিবর্তন হিসাবে বিবেচনা করা হয় ? ঠিক আছে, একটি সেকেন্ডের জন্য এলোমেলো সংখ্যা বাদ দাও, কারণ তারা সংজ্ঞা অনুসারে ননডেটেরিমেন্টিক এবং তাই প্রায়শই রিটার্নের মান পরিবর্তন হয়।
একটি খাঁটি ফাংশন হ'ল ডিটারমিনিস্টিক, যা বলতে গেলে প্রদত্ত ইনপুটটির জন্য আপনি একটি এবং ঠিক একটি আউটপুট পাবেন। আপনি স্থির পদ্ধতিগুলি খাঁটি ফাংশন হতে চান। জাভাতে স্থিতির পদ্ধতি ধরে রাখার জন্য টুইটার আচরণের উপায় রয়েছে, তবে এগুলি প্রায়শই ভাল ধারণা নয়। আপনি যখন কোনও পদ্ধতি স্থিতিশীল হিসাবে ঘোষণা করেন , সাধারণ প্রোগ্রামারটি ব্যাট থেকে ডান ধরে নেবে যে এটি একটি খাঁটি ফাংশন। প্রত্যাশিত আচরণ থেকে বিচ্যুতি হ'ল আপনার প্রোগ্রামে কীভাবে বাগ তৈরি করার ঝোঁক রয়েছে, সাধারণভাবে কথা বলা এবং এড়ানো উচিত।
একটি সিঙ্গলটন হ'ল "খাঁটি ফাংশন" এর বিপরীতে যেমন স্থির পদ্ধতি থাকে সেগুলি এমন একটি শ্রেণি যা আপনি হতে পারেন। একক স্থিতিশীল ব্যক্তিগত সদস্যকে ক্লাসে অভ্যন্তরীণভাবে রাখা হয় যা সঠিকভাবে একটি উদাহরণ রয়েছে তা নিশ্চিত করতে ব্যবহৃত হয়। এটি সর্বোত্তম অনুশীলন নয় এবং বেশ কয়েকটি কারণে আপনাকে পরে সমস্যায় ফেলতে পারে। আমরা কী সম্পর্কে কথা বলছি তা জানতে, এখানে একটি সিঙ্গলটনের একটি সাধারণ উদাহরণ:
// DON'T DO THIS!
class Singleton {
private String name;
private static Singleton instance = null;
private Singleton(String name) {
this.name = name;
}
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton("George");
}
return instance;
}
public getName() {
return name;
}
}
assert Singleton.getInstance().getName() == "George"