PHP는 서버 측 개발에 널리 사용되는 스크립팅 언어입니다. 설계 패턴은 개발자가 코드의 가독성, 유지 보수 및 확장 성을 향상시키는 데 도움이 될 수 있습니다. PHP 개발에서 설계 패턴이 널리 사용되며, 이는 일반적인 개발 문제를 어느 정도 해결하고 코드의 재사용 성과 모듈성을 향상시킬 수 있습니다. 이 기사는 PHP의 8 가지 고전적인 디자인 패턴을 깊이 탐구하고 예제를 통해 응용 프로그램을 시연합니다.
싱글 톤 패턴은 클래스를 한 번만 인스턴스화하고 글로벌 액세스 포인트를 제공하는 데 사용되는 일반적인 설계 패턴입니다. 객체를 자주 생성하고 파괴 해야하는 시나리오의 성능을 효과적으로 향상시킬 수 있으며 불필요한 자원 낭비를 피하십시오.
다음 코드는 PHP에서 싱글 톤 패턴을 구현하는 방법을 보여줍니다.
class Singleton {
private static $instance;
private function __construct() {
// 개인 생성자는 외부 인스턴스화를 방지합니다
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
$object = Singleton::getInstance();
위의 코드에서 $ 인스턴스 변수는 고유 인스턴스를 저장하는 데 사용되며 getInstance () 메소드는 인스턴스 개체를 작성하고 리턴하는 데 도움이됩니다. 인스턴스가 생성되지 않은 경우 새 인스턴스가 작성되어 $ 인스턴스에 할당됩니다.
공장 패턴은 공장 방법을 통해 객체를 생성하는 메커니즘을 제공하므로 클라이언트가 클래스 객체를 직접 인스턴스화 할 필요가 없으므로 객체 생성 및 사용 프로세스를 분리합니다.
PHP에서 공장 모드를 구현하는 예제 코드는 다음과 같습니다.
interface Shape {
public function draw();
}
class Rectangle implements Shape {
public function draw() {
echo "Draw a rectangle. ";
}
}
class Circle implements Shape {
public function draw() {
echo "Draw a circle. ";
}
}
class ShapeFactory {
public function getShape($shapeType) {
if ($shapeType === 'Rectangle') {
return new Rectangle();
} elseif ($shapeType === 'Circle') {
return new Circle();
}
return null;
}
}
$shapeFactory = new ShapeFactory();
$rectangle = $shapeFactory->getShape('Rectangle');
$rectangle->draw(); // 산출 "Draw a rectangle."
$circle = $shapeFactory->getShape('Circle');
$circle->draw(); // 산출 "Draw a circle."
이 예에서 Shape Interface는 Draw () 메소드를 정의하고 사각형 및 원 클래스는이 인터페이스를 구현합니다. shapeFactory 클래스는 전달 된 모양 유형에 따라 해당 객체를 생성합니다.
초록 공장 패턴은 특정 클래스를 지정하지 않고 객체와 관련이 있거나 의존하는 일련의 공장을 생성 할 수있는 공장 패턴의 확장입니다.
정책 패턴을 통해 알고리즘을 다른 정책 클래스로 캡슐화하여 클래스의 동작이 런타임시 동적으로 변경 될 수 있으며 클라이언트는 다른 정책을 선택하여 작업을 완료 할 수 있습니다.
관찰자 패턴은 객체 간의 일대일 의존성을 정의하는 행동 설계 패턴입니다. 객체의 상태가 변경되면 이에 의존하는 모든 객체에 알림을 받고 자동으로 업데이트됩니다.
데코레이터 모드를 사용하면 다른 객체의 기능에 영향을 미치지 않고 개체에 추가 기능을 동적으로 추가 할 수 있습니다. 객체의 기능을 확장하는 유연한 방법을 제공합니다.
프록시 모드는 해당 객체에 프록시 (스탠드 인)를 제공하여 다른 객체에 대한 액세스를 제어합니다. 대상 객체를 변경하지 않고 게으른 하중, 권한 점검 등과 같은 추가 기능을 추가 할 수 있습니다.
어댑터 모드는 어댑터 클래스를 생성하여 호환되지 않는 인터페이스를 변환하여 직접 협력 할 수없는 클래스가 함께 작동 할 수 있습니다.
위에서 소개 된 8 가지 설계 패턴은 PHP 개발에 널리 사용되며 코드의 구조 및 확장 성을 크게 향상시킬 수 있습니다. 이러한 디자인 패턴을 마스터하면 개발자가 복잡한 프로젝트를보다 침착하게 처리 할 수 있습니다. 이러한 패턴을 지속적으로 연습하면보다 간결하고 유연하며 효율적인 코드를 작성하는 데 도움이 될 수 있습니다.