در این قسمت تیم کدگیت را با آموزش Factory پترن در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
Creational Design Pattern
یکی از زیر شاخه های دیزاین پترن Creational Design Pattern هست. این پترن راهی برای ساخت اشیاست. وقتی از این الگو استفاده میشود که ما میخواهیم در برنامه خود از یک کلاس یک شی را بسازیم. اما برای بسیاری ممکن است ساخت شی بسیار ساده باشد و فقط با new کردن ما یک شی را بسازیم. اما hard code راه حل خوبی نیست!! زیرا ما بعضی اوقات در کد خود هویت یک کلاس را عوض کنیم و در این گونه اوقات ما باید از Creational Design pattern استفاده میکنیم.
Factory پترن در جاوا
Factory پترن یکی از پر کاربردترین الگوی های طراحی است. این پترن یکی از زیر شاخه های Creational Design Pattern است. هدف Factory پترن این است که یک interface یا کلاس Abstract بسازید ولی فرزندان تصمیم بگیرند چه شی ای را بسازند. ممکن است سر در گم کننده باشد به همین دلیل توضیح کوتاهی از این روش میدهیم.
فرض کنید شما مشتری هستید و یک محصولی را نیاز دارید ولی بجای اینکه خودتان این محصول را تهیه کنید(استفاده از new) به یک کارخانه مراجعه و از آن کارحانه محصولی که میخواهید را طلب میکنید. کارخانه ویژگی های محصول را از شما سوال و بعد از ساخت به شما میدهد.
مثال Factory پترن در جاوا
برای درک بیشتر Factory پترن در این قسمت یک مثال خواهیم زد. ما یک interface داریم به نام Shape . سه کلاس به نام Circle و Square و Rectangle این interface را implements میکنند. کد آنها به صورت زیر است:
public interface Shape {
void draw();
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
حالا نوبت به ساخت کارخانه است. ما این کلاس را ShapeFactory نامگذاری کردیم. کد این کلاس به صورت زیر است:
public class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
برای تست کدهای بالا، کد main زیر را بزنید(این دقیقا همان مشتری است که گفته شد):
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
Shape shape1 = shapeFactory.getShape("CIRCLE");
shape1.draw();
Shape shape2 = shapeFactory.getShape("RECTANGLE");
shape2.draw();
Shape shape3 = shapeFactory.getShape("SQUARE");
shape3.draw();
}
کلاس های Shape و Rectangle و Circle و Square دقیقا از الگوی Factory استفاده کردند یعنی یک interface داریم که ساخت اشیا به کلاس دیگر میرسد. اما کلاس ShapeFactory همان کارخانه مسئول ساخت اشیا است. Main ما نیز همان مشتری ما است.
بسیار آموزنده و کاربردی بود،منتظریم تا بقیه قسمت های دیزاین پترن رو هم در سایتتون توضیح دهید
ممنون از شما دوست گرامی
Goooood
آموزش های شما در رابطه با دیزاین پترن ها بسیار خوب هستند // ممنون از شما
سلام و عرض ادب، تشکر بابت آموزش های خوبتون، متاسفانه کد دیزاین پترن ها درون سایت RTL نشون داده میشن و ممنون میشم بررسی کنید
سلام. در حال بروزرسانی سایت هستیم. بزودی تمام کدهای سایت اصلاح می گردد.