>백엔드 개발 >PHP 튜토리얼 >PHP의 간단한 팩토리 패턴에 대한 자세한 설명

PHP의 간단한 팩토리 패턴에 대한 자세한 설명

零到壹度
零到壹度원래의
2018-03-29 11:48:388491검색

이 기사는 주로 PHP의 간단한 팩토리 모드에 대한 자세한 설명을 공유하며 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다. 편집자를 따라가서 살펴보겠습니다.

PHP의 간단한 팩토리 패턴에 대한 자세한 설명

1. 단순 팩토리의 정의

생성된 인스턴스의 유형은 인터페이스, 추상 클래스 또는 콘크리트일 수 있습니다. 수업.

2. 단순 팩토리의 구조 및 설명

단순 팩토리의 구조는 다음과 같습니다.

  • Api: 고객이 요구하는 기능적 인터페이스 정의

  • Impl: Api를 구체적으로 구현하는 구현 클래스에는 여러 가지가 있을 수 있습니다.

  • Factory: Factory, 적절한 구현 클래스를 선택하여 Api 인터페이스 객체

  • Client: Client, Factory를 통해 Api 인터페이스 객체를 얻은 다음 Api 인터페이스용 프로그램

Api 인터페이스:

/**
 * 接口的定义,该接口可以通过简单工厂来创建
 * 
 * @author Administrator
 *
 */
public interface Api {

	/**
	 * 具体功能方法的定义
	 * 
	 * @param s
	 *            需要的参数
	 */
	public void operation(String s);
}

ImplA:

/**
 * 接口的具体实现对象A
 * 
 * @author Administrator
 *
 */
public class ImplA implements Api {

	@Override
	public void operation(String s) {
		// 实现的功能
		System.out.println("ImplA s==" + s);

	}

}

ImplB:

/**
 * 接口的具体实现对象B
 * 
 * @author Administrator
 *
 */
public class ImplB implements Api {

	@Override
	public void operation(String s) {
		// 实现的功能
		System.out.println("ImplB s==" + s);

	}

}

Factory:

/**
 * 工厂类,用来创建Api对象
 * 
 * @author Administrator
 *
 */
public class Factory {
	/**
	 * 具体创建Api对象的方法
	 * 
	 * @param condition
	 *            从外部传入的选择条件
	 * @return
	 */
	public static Api createApi(int condition) {
		// 应该根据某些条件去选择究竟创建哪一个具体的实现对象
		// 这些条件可以从外部传入,也可以从其他途径获取
		// 如果只有一个实现,可以省略条件
		Api api = null;
		if (condition == 1) {
			api = new ImplA();
		} else if (condition == 2) {
			api = new ImplB();
		}
		return api;
	}

}

테스트 클래스 클라이언트:

public class Client {
	public static void main(String[] args) {
		// 通过简单工厂来获取接口对象
		Api api = Factory.createApi(1);
		api.operation("正在使用简单工厂模式");
	}

}

간단한 팩토리 호출 시퀀스 다이어그램:

간단한 팩토리에 대한 명명 제안:

  • 클래스 명명 제안은 "모듈 이름+Factory"입니다. 예를 들어 사용자 모듈의 팩토리는 UserFactory

  • 입니다.
  • 메서드 이름은 일반적으로 "get+인터페이스 이름" 또는 "create+인터페이스 이름"입니다. 예를 들어 사용자 인터페이스 이름이 UserEbi인 경우 메서드 이름은 일반적으로 getUserEbi 또는 createUserEbi입니다.

간단한 팩토리 메소드의 주요 내부 기능은 "적절한 구현 클래스 선택"입니다. 선택 조건 또는 매개변수의 소스는 일반적으로 다음과 같이 집중됩니다.

  1. 는 클라이언트에서 오고 클라이언트에 의해 결정 들어오는 매개변수

  2. 는 구성 파일에서 가져오고, 판단에 사용되는 값은 구성 파일

  3. 에서 가져옵니다. 특정 런타임 값을 가져오는 것과 같이 프로그램 런타임 중 특정 값에서 가져옵니다. 캐시에서

点 단순 팩토리의 장점:

    패키징 도움말
  1. 단순 팩토리는 간단하지만 구성 요소의 패키징을 실현하는 데 도움이 되어 매우 친절합니다. 실제로 인터페이스를 프로그래밍하는 구성 요소 외부.

2. 디커플링

간단한 팩토리를 통해 클라이언트와 특정 구현 클래스를 디커플링합니다.

간단한 팩토리의 단점: 1. 클라이언트의 복잡성이 증가할 수 있음

2. 서브 팩토리 확장이 불편함

간단한 팩토리의 본질: 구현을 선택하세요

간단한 팩토리를 선택하는 경우:

    특정 구현을 완전히 캡슐화하고 격리하여 외부 세계가 인터페이스를 통해서만 패키지를 작동할 수 있도록 하려면 클라이언트가 인터페이스를 통해서만 패키지를 작동할 수 있도록 하는 간단한 팩토리를 선택할 수 있습니다. 특정 성취에 신경 쓰지 않고 공장을 통해 해당 인터페이스를 얻습니다.
  • 외부 개체 생성 책임을 중앙에서 관리하고 제어하려면 간단한 팩토리를 선택하면 됩니다.

  • 추천 학습: "
PHP 비디오 튜토리얼

"

위 내용은 PHP의 간단한 팩토리 패턴에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.