در این قسمت تیم کدگیت را با آموزش Factory پترن در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
- آشنایی با شی گرایی
- آشنایی با Interface
- آشنایی با متد
- آشنایی با if
- دیزاین پترن
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 ما نیز همان مشتری ما است.
Download “دانلود سورس Factory پترن در جاوا”
Factory-pattern-in-java-www.codegate.ir_.rar – 157 بار دانلود شده است – 6,23 کیلوبایت پسورد: www.codegate.ir