Java-factory 패턴의 일반적인 디자인 패턴에 대한 자세한 설명
디자인 패턴의 원리: 프로그래밍을 핑계하기 위해
팩토리 패턴의 역할:
A. 애플리케이션 디자인에서는 객체 생성이 한 곳에 집중되거나 다음과 같이 통합됩니다. 특정 클래스를 관리하려면 (봄)
B. 애플리케이션 변경 없이 바로 객체를 추가할 수 있어 객체 유지 관리에도 유리하다.
팩토리 패턴의 종류:
A. 단순 팩토리
B. 팩토리 메소드
C. 추상 팩토리
웨지:
동북부의 한 사장은 집에 메르세데스-벤츠, BMW, 람보르기니 세 대의 차가 있다고 합니다. 그는 가끔 운전사에게 다른 차를 운전해달라고 부탁하기도 했습니다. 사교를 위한 자동차.
단순 팩토리:
abstract:
package com.product.abstruct;
공용 인터페이스 Car {
public void 드라이브( );//차는 운전용이므로 엔진이 있어야 합니다
> 🎜> public voiddrive(){//BMW도 말이 아니라 자동차이고 엔진이 있어야 합니다
}
공개 클래스 벤츠는 자동차를 구현합니다. {
Public void Drive() {//아우디도 자동차이지 디올이 아니라 엔진이다
//Todo Auto-Generatically ,오늘은 벤츠를 운전한다. . . . ");
System.out.println (" 사장님, 지시 사항 중 일부 ... "); ======람보르기니 지방====== 공장 수업 : 팩토리 클래스는 관리직으로 자동차를 직접 담당하는 사람입니다. package com.product.factory; .Benz; public class Driver { public static CardriveCar(String carName) throws Exception{ If(carName.equalsIgnoreCase("Benz" )) {새 벤츠 반환();
}
if (carname.equalSignorecase ("bmw") {
새 BWM 반환( );
... BMW가 오후 2시에 그를 데리러 갑니다. . .
패키지 com.product.test;com.product.abstruct.car 가져오기
Com.productory.driver 가져오기; public static void main(String[] args) throws Exception{ Car car = Driver.driveCar("Benz");//운전자에게 와서 데리러 와달라고 요청하세요 ;/ /원클릭 시작 사장의 사업이 점점 커지면서 그는 점점 더 부자가 되었고, 그래서 페라리, 포르쉐, 재규어 등 스포츠카 몇 대를 살 뻔했다. 모든 차는 숙련된 운전자가 관리해야 했고, 연간 점검, 보험, 티켓, 세차 등은 모두 숙련된 운전자가 관리해야 했고, 사장은 늙은 운전자에게 운전을 요구할 것입니다. 월요일부터 토요일까지 다양한 자동차 모델. 이때 노련한 운전자는 상사가 어떤 날에 어떤 차를 운전해야 하는지 기억해야 하기 때문에 상사에게 제안합니다. 모든 차에 운전자가 있습니다. 그리고 각 차량에는 전담 담당자가 있습니다. 나가야 할 때 나에게 인사하면 담당자를 보내 상사를 데리러 갈 것입니다. 패키지 com.product.car.abstruct; public void 드라이브() | struct.Car; 공개 클래스 AudiDriver는 Car {를 구현합니다. System.out.println("공무원이 되고 싶다면 동그라미가 4개 있습니다.")
패키지 com.product.car.implement;
import com.product.car.abstruct.Car;
public class AudiDriver Implements Car {
🎜> System.out.println("공무원이 되고 싶은 네 가지 원") ;
차량 관리자(베테랑 운전사)
패키지 com.product.car.manager; 공개 인터페이스 CarManager {
~ ‐ ‐ ‐ ‐ ‐ public CardriveCar();
🎜>
package com.product.car.managerImpl
import com.product.car.implement.benzdriver; zmanager는 CarManager를 구현합니다. { 새 BenzDriver() 반환; 🎜>
패키지 com .product.test;
com.product.car.abstruct.Car;
가져오기 공개 수업 테스트 {
public static void main(문자열 [] args) throws Exception{ BMW가 리버풀 대 빌라 경기를 보러 갔다 여기
‐ s 's it ‐ to ' s 's ' s ‐ ‐ ‐ Car DriveCar = carManager.driveCar();
드라이브Car.drive() 🎜>
위는 팩토리 패턴에서의 간단한 팩토리와 팩토리 방식을 먼저 비교한 것입니다. 프로그램 설계 관점: a. 간단한 팩토리에는 추상 클래스가 없고 하나의 팩토리 클래스만 있습니다. 객체를 생성하는 데 필요한 매개변수를 전달하고 팩토리 클래스는 이를 균일하게 생성합니다.
b. 인터페이스, 이 인터페이스는 서브클래스가 구현해야 하는 메소드를 정의하고 객체 자체에 객체를 넘겨
장점과 단점:
a. 상대적으로 간단함 팩토리 방법은 더 추상적이어야 합니다. 이 방법의 장점은 팩토리의 역할을 변경하지 않고도(기존 드라이버를 해고하거나 재배치하지 않고도) 쉽게 새 구성원을 추가할 수 있다는 것입니다. > b. 단순 팩토리의 장점은 매개 변수를 기반으로 해당 객체만 생성한다는 것입니다. 그러나 단점도 매우 분명합니다. 모든 객체는 이 클래스에서 생성되며 생성된 객체는 미리 알 수 있습니다. (어느 날 갑자기 사장이 수동 제타를 샀는데, 사장이 예전 운전자에게 내가 제타를 사서 X에 넣었다는 사실을 알려야 했다). 응집력 시스템의 특정 제품 카테고리 수가 계속 증가하면 팩토리 클래스가 다양한 조건에 따라 다양한 인스턴스를 생성해야 할 수도 있습니다. 이러한 조건 판단과 특정 제품 유형 판단이 서로 얽혀 있어 모듈 기능의 확산을 피하기 어렵고 시스템 유지 관리 및 확장에 매우 해로울 수 있습니다.
다음 단계는 다음과 같습니다. 팩토리 모드 적용 및 프로그램 설계 어떻게 팩토리 디자인 패턴을 합리적으로 적용할 수 있을까요?
a. 특정 제품에 대해 호출자는 어떤 특정 팩토리 서비스를 사용해야 하는지 명확하게 알고 특정 팩토리를 인스턴스화하여 생성합니다. 특정 제품. 이는 Java 컬렉션의 iterator() 메소드의 경우입니다.
b. 제품이 필요할 뿐이지 어느 공장에서 생산하는지 알고 싶지도 않고 알 필요도 없습니다. 즉, 어떤 특정 공장을 사용할지는 최종 결정에 달려 있습니다. 현재 시스템 조건에 따라 결정을 내리는 생산자는 특정 공장을 인스턴스화하여 사용자에게 반환하며 이러한 의사 결정 과정은 사용자에게 투명합니다.
자주 많이 사용하는 자바 디자인 패턴에 대한 자세한 설명 - 팩토리 패턴 관련 글은 PHP 중국어 홈페이지를 주목해주세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

많은 응용 프로그램 시나리오에서 정렬을 구현하기 위해 이름으로 이름을 변환하는 솔루션, 사용자는 그룹으로, 특히 하나로 분류해야 할 수도 있습니다.

시스템 도킹의 필드 매핑 처리 시스템 도킹을 수행 할 때 어려운 문제가 발생합니다. 시스템의 인터페이스 필드를 효과적으로 매핑하는 방법 ...

데이터베이스 작업에 MyBatis-Plus 또는 기타 ORM 프레임 워크를 사용하는 경우 엔티티 클래스의 속성 이름을 기반으로 쿼리 조건을 구성해야합니다. 매번 수동으로 ...

IntellijideAultimate 버전을 사용하여 봄을 시작하십시오 ...

Java 객체 및 배열의 변환 : 캐스트 유형 변환의 위험과 올바른 방법에 대한 심층적 인 논의 많은 Java 초보자가 객체를 배열로 변환 할 것입니다 ...

전자 상거래 플랫폼에서 SKU 및 SPU 테이블의 디자인에 대한 자세한 설명이 기사는 전자 상거래 플랫폼에서 SKU 및 SPU의 데이터베이스 설계 문제, 특히 사용자 정의 판매를 처리하는 방법에 대해 논의 할 것입니다 ...

Redis 캐싱 솔루션은 제품 순위 목록의 요구 사항을 어떻게 인식합니까? 개발 과정에서 우리는 종종 a ... 표시와 같은 순위의 요구 사항을 처리해야합니다.
