이 기사는 추상 공장 모델을 사용하여 Java가 구현 한 KFC 소비 사례에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 패턴 정의
추상 공장 패턴은 콘크리트 구현 클래스를 지정하지 않고 관련 또는 종속 객체 제품군을 만들기위한 인터페이스를 제공합니다.
추상 공장 모델을 사용하면 고객이 추상 인터페이스를 사용하여 관련 제품 세트를 만들 수 있습니다. 고객 수업과 공장 수업이 분리됩니다. 고객이 제품이 필요한 경우 공장에서만 제품을 요청하면됩니다. 고객은 수정없이 신제품을 얻을 수 있습니다.
2. 모델의 예
1 패턴 분석
우리는 아버지와 아들이 KFC 매장에가는 장면을 빌려서이 패턴을 설명하기 위해 소비합니다. 추상 분석을 수행 한 후 스크린 샷은 다음과 같습니다
추상 공장 패턴의 2 정적 모델링
3 코드 예제
3.1 추상 음식의 설립
추상 음식 - AbstractBaseFood
패키지 com.demo.factory.model;/** * * 식품 기반 클래스 * * @author maofw * */public accract class actractbasefood {// 범주 보호 문자열 종류; // 수량 보호 int num; // 가격 보호 플로트 가격; // Total public float totalprice () {return this.num * this.price; }}음식 인터페이스 - Ifood
패키지 com.demo.factory.model;/*** 초록 음식 인터페이스** @author maofw**/public interface ifood {/*** 음식 정보 인쇄*/void printmesage ();}3.2 다른 음식에 대한 추상 기본 수업을 설정하십시오
햄버거베이스 클래스 - 함부르크
package com.demo.factory.model; /** * 함부르크 기본 클래스 * @author maofw * * /public arbost class hamburg extract basefood empless itood {public void printmesage () {system.out.println ( "-" + this.kind + "flavored hamburger : /t thistity :" + this. + ", /t +" + " +" + " +" + " +" + " ", /t 총 :" + this.totalPrice ()); }}닭 날개
package com.demo.factory.model; /** * Chicken Wings Base Class * @author maofw * * /public basefood chickenwings 확장 Ifood {public void printmesage () {System.out.println (system.out.println ( " + this.kind +"flavored chicken wings, /t yitrice + ", /t quartity +", " +" 총 : " + this.totalPrice ()); }}프렌치 튀김 기본 클래스 - 프렌치 프라이스
package com.demo.factory.model; /** * 프렌치 프라이스베이스 클래스 * * @author maofw * * /public acc /t 총 : " + this.totalPrice ()); }}
음료 기본 클래스 - 음료
package com.demo.factory.model; /** * 음료 기본 클래스 * @author maofw * * /public basefood emperage extractbasefood empless ifood {public void printmesage () {System.out.println ( "-" + this.kind + "Beverage, /t Unit.Prise +", " + thistity +" 총 : " + this.totalPrice ()); }}3.3 특정 음식을 만듭니다
매운 닭 다리 버거 - Chinahanburm
package com.demo.factory.model.kfc; import com.demo.factory.model.model.hamburg;/** * 중국 스타일의 매운 치킨 레그 버거 * * @author maofw * */public class chinahanburm 확장 햄버그 {/** * constructing method * * @param 종류 * @param */public */public */public */public */public */public */public */public */public */public hamburg. "매운"; this.price = 14.0f; this.num = num; }}올리언즈 닭 날개 - Chinachickenwings
package com.demo.factory.model.kfc; import com.demo.factory.model.chickenwings;/** * 닭 날개 구현 클래스 * * @author maofw * */public class chinachickenwings는 닭고기 확장 {this chinachickenwings (int num) {this.kind = "orlans"; this.price = 2.5f; this.num = num; }}프렌치 튀김 - Chinafrenchfries
package com.demo.factory.model.kfc; import com.demo.factory.model.frenchfries;/** * 프랑스 감자 튀김 구현 클래스 * * @author maofw * */public class Chinafrenchfries는 프랑스어를 확장합니다 {int num) {this.kind = "normal"; this.price = 8.0f; this.num = num; }}콜라 - 차이나 비버
package com.demo.factory.model.kfc; import com.demo.factory.model.beverage;/** * 음료 구현 클래스 * * @author maofw * */public class Chinabeverage는 음료를 확장합니다. this.price = 7.0f; this.num = num; }}
3.4 공장을 설립하십시오
추상 KFC 공장 만들기 -IKFCFactory 생산 추상 음식
package com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.frenchfries; import com.demo.factory.model.hamburg;/** ** ** ** kfc interfor ikfcfactory {// 햄버거 공공 함부르크 생산 // 튀김 생산 공공 프랑스 프리즈 CreateFrenchfries (int num); // 닭 날개 생산 공개 치킨 윙스 크리데 켄 윙스 (int num); // 음료 생산 공공 음료 CreateBeverage (int num);}특정 KFC 공장 생성 -Cinakfcfactory, 특정 음식을 생산하십시오.
package com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.Chickenwings; import com.demo.factory.model.frenchfries; import com.demo.factory.model.hamburg; importory.demo.moptory com.demo.factory.model.kfc.chinachickenwings; import com.demo.factory.model.kfc.chinafrenchfries; import com.demo.factory.model.kfc.chinahanburm; 공개 클래스 Chinakfcfactory republes {// 생산자 생산자 vverage (public beverage beverage beverage beverage). Chinabeverage (num); } // 생산 Orleans 구운 닭 날개 공개 치킨 윙스 CreateChickenwings (int num) {return new Chinachickenwings (num); } // Frenchfries CreateFrenchfries (int num) {return new Chinafrenchfries (num); } // 매운 닭 다리 버거 공개 함부르크 생산자 생산 }}3.5 고객 클래스 만들기 - 고객
package com.demo.factory.custom; import com.demo.factory.itf.ikfcfactory; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.frenchfries; import Class*** hamb. @author maofw * */public class customer {// 초록 공장 개인 ikfcfactory kfcfactory; // 생성자 메소드는 추상 공장을 매개 변수로 공개 고객으로 전달합니다 (ikfcfactory kfcfactory) {this.kfcfactory = kfcfactory; } / *** 주문 음식* // 주문 매운 닭 다리 버거 퍼블릭 플로트 오더 옴 부르 (Int Num) {// 매운 닭 다리 버거 함부르크 햄버르그 햄버르그 = kfcfactory.createhamburg (num); // 출력 주문 정보 Hamburg.PrintMesage (); // 총 가격을 반환합니다 Hamburg.TotalPrice (); } // 주문 Orleans 로스트 로스트 닭 날개 공개 플로트 orderchickenwings (int num) {// Orleans 로스트 치킨 날개 치킨 윙스 = kfcfactory.createchickenwings (num); // 출력 주문 정보 Chickingwings.printmesage (); // 총 가격 반환 치킨 윙스 .totalPrice (); } // order fries public float orderfrenchfries (int num) {// 프렌치 프렌치 프렌치 프렌치 프랑스어 = kfcfactory.createfrenchfries (num); // 출력 주문 정보 Frenchfries.printmesage (); // 총 가격 반환 프랑스 프리즈 .TotalPrice (); } // 주문 콜라 공개 플로트 orderbeverage (int num) {// 콜라 음료 음료 get get kfcfactory.createbeverage (num); // 출력 주문 정보 음료 .printmesage (); // 총 가격 반환 음료를 반환합니다 .TotalPrice (); }}3.6 스토리 라인 디스플레이
package com.demo.factory; import java.lang.management.managementfactory; import java.net.httpurlconnection; import java.net.url; import java.net.urlconnection; import java.net.urlconnection; import java.sql.connection; import java.sql.sql.drivermanager; java.sql.preparedstatement; import java.sql.sqlexcept; import java.text.numberformat; import java.util.arrays; import java.util.calendar; import java.util.resourcebundle; import com.demo.custom.custom.customer; com.demo.factory.itf.chinakfcfactory; import com.demo.factory.itf.ikfcfactory; public class mainapp { / ** * main Application Method * * @param args * / public static void main (string [] args) { / ** * kfc (ikfcfactory tame) * / ikfcfactory kfcfactory kfcfactory chinakfcfactory (); / *** 아빠와 아들은 주문을 준비하기 위해 KFC에 들어갔다*/ 고객 고객 = 신규 고객 (KFCFactory); / *** 주문 시작* // 매운 닭 다리 버거 플로트 Hamhurgmoney = customer.orderhamburg (1); // 4 개의 Orleans 구이 닭 날개가 float Chickenwingsmoney = customer.orderChickenwings (4); // 감자 튀김 팩 플로트 프렌치 프리즈 양모 = customer.OrderFrenchfries (1); // 콜라 플로트 콜라 두 컵 Beveragemoney = customer.orderBeverage (2); System.out.println ( "Total :" + (Hamhurgmoney + Chickenwingsmoney + Frenchfriesmoney + Beveragemoney)); }}실행 결과 :
-매운 버거, 단가 : 14.0, 수량 : 1, 총 : 14.0
-오를린 맛의 닭 날개, 단가 : 2.5, 수량 : 4, 총 : 10.0
-노드 풍미 감자 튀김, 단가 : 8.0, 수량 : 1, 총 : 8.0
-콜라 음료, 단가 : 7.0, 수량 : 2, 총 : 14.0
총 : 46.0
3.이 모델의 디자인 원리
1 더 많은 객체 조합과 상속이 적습니다
2. 구현 프로그래밍이 아닌 추상 프로그래밍의 경우
3 개의 제품 객체는 공장 노출 방법을 통해 생성됩니다
4. 행사를 사용하십시오
1. 제품 패밀리를 만들고 관련 제품을 함께 사용하십시오.
2 제품 라이브러리를 제공하고 싶고 구현 대신 인터페이스 만 표시하려고합니다.
3 공장을 결합하여 사용할 때.
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.