간단한 공장 모드
클래스 다이어그램
공장 클래스를 통해 조건으로 해당 객체 생성
// 비즈니스 기능 공개 인터페이스 Ialculation {Double GetResult (Double Numa, Double Numb); } public class calcadd는 icalculation {@override public double getresult (double numa, double numb) {system.out.println ( "add"); Numa + numb를 반환합니다. }} public class calcsubtract는 icalculation {@override public double getresult (double numa, double numb) {system.out.println ( "subtraction"); Numa -Numb 리턴; }}/** 간단한 공장 모드는 다음에 중점을 둡니다. 객체 생성* 동일한 인터페이스를 구현하거나 상속 관계가있는 일부 클래스의 인스턴스를 생성하기 위해 팩토리 클래스를 만듭니다*/public class test4simple {public static void main (String [] args) {// String operation = "/"; 문자열 작동 = "+"; // 문자열 작동 = "-"; // 문자열 작동 = "*"; 이중 numa = 182, numb = 33; icalculation createcalc = calcsimplefactory.createcalc (작동); 이중 결과 = createcalc.getResult (numa, numb); System.out.println (결과); }} 간단한 공장의 결함 : 간단한 공장이 제품을 생성 할 때 해당 매개 변수를 전달해야합니다. 패스가 올바르지 않으면 객체를 검색 할 수 없습니다.
개선 : 여러 가지 방법으로 다른 제품 범주를 만듭니다
공개 클래스 calcmultiplefactory {public static icalculation produceadd () {return new calcadd (); } public static icalculation producesubtract () {return new calcsubtract (); } public static icalculation producemultiply () {return new calcmultiply (); } public static icalculation producedivide () {return new calcdivide (); }} public class test4multiple {public static void main (String [] args) {double numa = 182, numb = 33; icalculation createcalc = calcmultiplefactory.produceadd (); 이중 결과 = createcalc.getResult (numa, numb); System.out.println (결과); createcalc = calcmultiplefactory.producesubtract (); 결과 = createcalc.getResult (numa, numb); System.out.println (결과); createcalc = calcmultiplefactory.producesubtract (); 결과 = createcalc.getResult (numa, numb); System.out.println (결과); createcalc = calcmultiplefactory.producemultiply (); 결과 = createcalc.getResult (numa, numb); System.out.println (결과); createcalc = calcmultiplefactory.prodivide (); 결과 = createcalc.getResult (numa, numb); System.out.println (결과); }} 추상 공장 패턴
추상 공장, 물리 공장, 추상 제품, 물리적 제품 초록 공장 : 제품 생성 방법을 정의하는 몇 가지 개념이 있습니다. 엔티티 공장 : 특정 제품 초록 제품 생성 : 인터페이스 또는 기본 클래스 엔티티 제품 : 특정 기능 구현 또는 파생 클래스 다이어그램
// Abstract1 Public Interface iProduct1 {public void show (); } // Abstract2 Public Interface iProduct2 {public void show (); } // Entity Product1 Public Class Product1 Iproduct1 {public void show () {System.out.println ( "유형 1 제품"); }} // Entity Product2 Public Class Product2 Iproduct2 {public void show () {System.out.println ( "생성 유형 2 제품"); }} / * * 1a 1b는 동일한 제품 계층 구조에서 Product1에 속합니다. System.out.println ( "이것은 제품 1 : 제품 A"); }} public class gradeproduct1b는 product1 {@override public void show () {super.show (); System.out.println ( "이것은 제품 1 : 제품 B"); }} public class gradeproduct1b는 product1 {@override public void show () {super.show (); System.out.println ( "이것은 제품 1 : 제품 B"); }} public class gradeproduct2a는 product2 {@override public void show () {super.show (); System.out.println ( "이것은 제품 2 : 제품 A"); }} public class gradeproduct2b는 product2 {@override public void show () {super.show (); System.out.println ( "이것은 제품 2 : 제품 B"); }} // 초록 공장은 다른 추상 제품 공개 제품을 생성합니다. public interface ifactory {public iproduct1 createproduct1a (); // class 1 제품 모델 A public iproduct1 createproduct1b (); // class 1 제품 모델 B Public IProduct2 CreateProduct2a (); // classe models 2 createpr2b (// 2); // 클래스 1 제품 공장은 물리적 제품을 생성하고, 반환 유형은 추상 제품 공개 클래스 공장을 구현합니다. } public iproduct1 createproduct1b () {return new gradeproduct1b (); } public iproduct2 createproduct2a () {return new gradeproduct2a (); } public iproduct2 createproduct2b () {return new gradeproduct2b (); }} /** 초록 공장 패턴 : 관련 또는 상호 의존적 인 객체 세트를 만드는 데 사용됩니다** 프로세스 : 추상 공장, 물리적 공장, 물리적 공장을 생산하는 제품을 생산합니다* 추상 제품, 물리적 제품은 제품 기능을 실현합니다. 공장(); IProduct1 product1a = factory.createproduct1a (); product1a.show (); iProduct1 Product1b = Factory.createProduct1b (); product1b.show (); IProduct2 Product2A = Factory.createProduct2a (); product2a.show (); IProduct2 product2b = factory.createproduct2b (); product2b.show (); }}