음악 듣기
현재 시중에 나와 있는 주류 음악 플레이어로는 QQ Music, NetEase Cloud Music, Kugou Music, Kuwo Music 등이 있습니다.
사람마다 음악을 듣기 위해 서로 다른 플레이어를 사용할 수 있습니다. 음악 플레이어 중 하나를 선택하여 음악을 들을 수 있습니다. 아래 코드를 참조하세요.
if ($type == 1) { $player = new QQPlayer(); } else if ($type == 2) { $player = new WyPlayer(); } else if ($type == 3) { $player = new KGPlayer(); } $player->on(); // 打开播放器 $player->choiceMusic('思念是一种病'); // 选择歌曲 $player->play(); // 开始播放
지금 Kuwo Music Player를 추가하고 싶거나 NetEase Cloud Music을 제거할 수 있다고 생각하는 경우(Jay Chou의 음악을 들을 수 없음) 노래), 그런 다음 프로그램을 수정해야 합니다(조건부 분기를 수정해야 함). 따라서 이러한 코드는 유지 관리가 어렵습니다.
프로그램 작성 시 한 가지 원칙은 변경 사항을 추출하고 캡슐화하는 것입니다. 조건부 분기를 추출하여 새 클래스로 캡슐화합니다.
간단한 엔지니어링 모드
정의: 다양한 매개변수에 따라 다양한 클래스의 인스턴스를 반환할 수 있는 팩토리 클래스를 정의합니다. 생성된 인스턴스에는 일반적으로 공통 상위 클래스가 있습니다
간단한 팩토리 패턴에서 메서드는 인스턴스를 생성하는 데 사용되는 것은 일반적으로 정적 메서드이므로 간단한 팩토리 패턴을 정적 팩토리 메서드
라고도 합니다. 이제 다음 코드를 사용하여 간단한 엔지니어링 패턴을 만들어 보겠습니다.
class SimpleFactory { public static function createMusicPlayer ($type) { if ($type == 1) { $player = new QQPlayer(); } else if ($type == 2) { $player = new WyPlayer(); } else if ($type == 3) { $player = new KGPlayer(); } else { return null; } return $player; } }
그럼 기사 시작 부분의 코드는 다음과 같습니다. 다음과 같이 수정할 수 있습니다:
$player = SimpleFactory::createMusicPlayer($type); $player->on(); // 打开播放器 $player->choiceMusic('思念是一种病'); // 选择歌曲 $player->play(); // 开始播放
질문이 있을 수 있습니다. 이렇게 하면 무슨 소용이 있나요? 문제를 한 곳에서 다른 곳으로 옮기는 것 같습니다.
생각해 보세요. 아침이나 밤에 음악을 들을 수도 있고, 이 플레이어에 우리가 듣고 싶은 음악이 없으면 다른 플레이어로 바꿔야 합니다. 그러면 여러 장소에서 새로운 음악 플레이어를 만드는 것이 가능합니다. 따라서 이 코드를 여러 곳에 두는 것보다 한 곳에 두는 것이 더 좋습니다. 변경해야 할 경우 한 곳에만 넣으면 됩니다. 이런 방식으로 유지 관리할 때는 간단한 팩토리 패턴 클래스에서 createMusicPlayer만 수정하면 됩니다.
위 내용은 PHP 디자인 패턴 간단한 팩토리 패턴의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!