일반적인 디자인 패턴의 자바 기초

하나 : 추상 팩토리 패턴 

  공장 모델은 주변의 다른 공장 슈퍼 공장을 만들 수 있다는 것을 의미한다. 이 공장은 또한 슈퍼 다른 공장 공장으로 알려져있다. 디자인 패턴이 유형의 개체를 만들 수있는 가장 좋은 방법을 제공 스키마를 만들 속한다. 추상 팩토리 패턴에서는 인터페이스가 관련 객체 팩토리를 생성하는 책임이 명시 적으로 자신의 클래스를 지정할 필요가 없습니다. 각 공장 모델을 제공 할 수있는 객체 팩토리에 따라 생성.

  1 / * 
  2 * 인터페이스 유화 
  . 3 * / 
  . 4 공용 인터페이스 컬러 { 
  . 5 // 채우기 색상 
  6 보이드. 채우기 () 
  . 7 } 
  . 8 
  . 9 
 (10) 
 . / ** 11 
 12 계면의 형상 인 * 
 13 * / 
 14 공중 인터페이스 도형 {  15 / / 모양을 그림  16 무효 그리기 ()  . (17) .} 19 18 20 21이 구현 임 GreenColor 클래스 공공 색상 색상은 {// 구현 클래스 공개 무효 (22)는 23 {에서 System.out.println ( "--- 녹색"입니다) (기입 ) 24 25} } 공용 클래스 (26)는 구현 redColor 색상 색상 {// 구현 클래스 공공 무효 27 채우기 () (28) {에서 System.out.println ( "빨간색 ---" ); 29 } (30)} 31 32 33 34 35 Public 클래스 TriangleShape이 구현 형태 {// 형상 구현 클래스 공개 무효 36 드로우 () 37 [{에서 System.out.println는 ( "삼각형 ---" ) (38)이다 } 39 } 공용 클래스 CircleShape 유단 40 모양 {// 형상 구현 클래스 공개 보이드 (41)는 42에서 System.out.println {( "--- 라운드"이다) (그리기 43) } 44 45 46 47 48 / 49 * ** 추상 공장, 두 인터페이스하여 구성된} * 50/51 공중 추상 클래스이다 AbstractFactory {공개 초록 색상 52 getColor에서 (문자열 색); // 얻어진 물체색 문자열 53 공용 추상 모양 getShape (끈 형상의 종류에 따라 ); // 얻어진 오브젝트 형태 스트링 (54)의 종류에 따라 } 55 56 57 58 공용 클래스 ColorFactory는 AbstractFactory는 {// 확장 컬러 식물 상속하는 추상 팩토리 59 공용 색 getColor에서 (문자열 색) {// 객체 (60)는 어떤 경우 (NULL == 컬러) 얻어진 색 캐릭터는 null에 따라 { } (61) ( "빨간색"경우.equalsIgnoreCase (색)) {62 반환 새로운 RedColor (); //이 다른 redColor 대상을 인스턴스화} (63) 인 경우 ( "녹색" .equalsIgnoreCase (색상)) {64 반환 새로운 새 GreenColor (); // 객체의 인스턴스가 GreenColor이고 65 } 66는 null ; 67 } 68 공용 getShape 형상 (형상 문자열) {// 객체의 종류의 형상 (69) 창 널 문자열 얻었다 70 } 71이다 } 공용 클래스 75 72 73 74 {// ShapeFactory 연장 AbstractFactory 형상 식물은 속됨 추상 공장 76 공용 색 getColor에서 (문자열 색) { 컬러 스트링에 의해 얻어진 개체 (77)는 null // 78 } 79 공용 getShape 형상 (형상 문자열) {// 얻을 오브젝트 (80)의 어떤 경우, 문자열의 형태 (형상 == NULL)는 null { } (81) ( "삼각"IF .equalsIgnoreCase (Shape가)) {창 (82) 새로운 새 CircleShape (); // CircleShape 인스턴스화 83 개체} 다른 경우 ( 「원」.equalsIgnoreCase (형상)) {84 반환 새로운 TriangleShape (); // TriangleShape 85 객체 인스턴스화 } 86는 null ; 87 } 88 } 89 90 91 92 인 {// 공용 클래스 FactoryBuilder 친 식물 콘크리트 공장 객체 93 공개 구성을 정적 AbstractFactory getFactory (문자열 공장) {IF (94 "colorfactory" .equalsIgnoreCase (초기)) {95 반환 새로운 새 ColorFactory () 상기 다른} IF (96 "shapefactory" .equalsIgnoreCase (초기)) {97 반환 새로운 새 shapeFactory (); 98 } 99는 null 100 } 101 } 102 103 104 106분의 105 ** * 테스트 클래스 추상 공장 모델 * 108분의 107 공용 클래스 AbstractFactoryPattern 109 {공공 정적 무효 메인 (문자열 []에 args) {// 위젯 컬러 공장 110 111 AbstractFactory FactoryBuilder.getFactory AF = ( "colorfactory ") // 112 색 적색 적색 af.getColor = 113 ( "레드"개체 생성 // 114 115 출력) 빨간색 물체 (16) = 117 컬러 녹색 af.getColor ( "녹색 만들기 1 //; red.fill을 () " ) (118) 출력 (119) // green.fill (); 120 (121)에서 System.out.println ( "분리선 ------------------------- - " ); 122 = 123 AbstractFactory AbstractFactory FactoryBuilder.getFactory ("shapefactory " ) 124 = abstractFactory.getShape 도형 원 ("CIRCLE " ) 125 circle.draw (); 126 = 도형 삼각형 abstractFactory.getShape ("삼각 " ) 127 triangle.draw () 128 }} 129

 

II : 프록시 디자인 패턴

  프록시 모드가 프록시 객체 원래 오브젝트 레퍼런스에 의해 제어되는 프록시 객체를 제공하는 개체를 의미한다. 연기는 정적 및 동적 프록시 에이전트로 나눌 수있다. 
프록시 모드를 통해, 당신은 기능을 확장하기 위해 프록시 개체, 프록시 개체에 추가 기능을 추가하기 위해 프록시 개체를 사용할 수 있습니다. 이 방법은 이전과 방법의 실행 후에 소정의, 기록 및 다른 동작의 실행 시간을 계산하는데 사용될 수있다.

 

III : 싱글 톤 디자인 패턴

  단일 모드 실시 예를 지칭 하나의 클래스 오브젝트 모델의 인스턴스 지연 모드와 악당으로 분할 만든다.

    배고파 유형 : 생성자 민영화, 외부의 새로운 오브젝트가 인스턴스화 생산 목적은 정적 방법에 의해 달성 될 수 인스턴스화 할 수있다. 어떤 스레드 안전 문제가 없습니다.

. Public 클래스 1 TestSingleton { 
 2 // 생성자 민영화 
 . 3 개인 TestSingleton () {} 
 4 // 클래스로드는, 오브젝트의 인스턴스를 작성 
 5 개인 정적 testSingleton = 최종 TestSingleton 새로운 새. TestSingleton을 () 
 . 6 // 외부의 제공 방법은 객체 인스턴스를 리턴 
 7 공용 static. testSingleton getTestSingleton () {  8 창. testSingleton 단계;  . 9 } 10}

 

    게으른 사람 : 젠록를 추가 할 필요, 젠록은 프로그램 실행의 효율성에 영향을 미친다.

      1) 이중 하는지를 결정

공공 클래스입니다. 1 TestSingleton { 
 2 
 . 3 / ** 
 . 4 * 명령으로 휘발성 중요한 역할은,이 지시어는 컴파일러, 최적화함으로써 생략되지 않도록하기 위해 
 5 *를 각이 직접 독서가 필요합니다. 
 I는 사용할 때마다 메인 메모리에서 수행되도록 6 * 휘발성 가변. 오히려 각 스레드의 "작업 메모리"가 아닌. 
 7 개체 변수 * 선언 
 인해 재구성 새로운 TestSingleton () 8 * 휘발성 disable 명령은 주로이, 문제가 발생할 수 
 9 * /. 
10 = 개인 testSingleton TestSingleton 휘발성 정적 널을 ; 
. 11 
12 민영화 // 생성자 
13 비공개 TestSingleton () {} 
(14) 
/ ** 15 
외부 방법을 제공 * 16 개체 인스턴스를 반환 
스레드 안전을 보장하기 위해 잠긴 경우 (동기화) (17) * 한 번 확인합니다. 
* 18 /이다 
. 19 공개 staticTestSingleton getTestSingleton () {  20 // 판정되면, 오브젝트가 인스턴스화되지 갖는다  21 인 경우 (testSingleton == NULL의 ) {  22 잠글 //이다  (23)가 동기 (TestSingleton.class이다 (24)는 오브젝트가 인스턴스화되지 않았다고 판정 한 경우) {// 25 (testSingleton == null의 경우 {= 26 testSingleton 새로운 신규)이다 ) (TestSingleton 27 } 28 } 29 개체 (31)의 인스턴스를 반환 //}} 30 리턴 testSingleton

 

      2) 내부 클래스

Public 클래스. 1 TestSingleton { 
 2 
 . 3 // 생성자 민영화 
 . 4 개인 TestSingleton () {} 
 . 5 
 . 6 // 정적 내부 클래스 전용 정적 외부 객체를 인스턴스화하는 
 . 7 개인 정적 클래스 InternalClass { 
 . 8 // 인스턴스화 외부 물체 
 . 9 개인 정적 TESTSINGLETON = 최종 TestSingleton 새로운 새 TestSingleton ();  10  }  . 11  (12)가 외부에서 제공되는 방법은 //  13 공개 정적 TestSingleton getTestSingleton () {창 (14) InternalClass.TESTSINGLETON 15 }} 16

 

네 : 빌더 디자인 패턴

  빌더 모드가 함께 다양한 제품의 관리, 복합 개체를 만들 수 있다는 것을 의미, 소위 복합 객체 클래스를 의미는 서로 다른 특성을 가지고있다.

다섯 : 어댑터 디자인 패턴

  목표는 타의 추종을 불허하는 인터페이스 클래스로 인한 호환성 문제를 제거하기 때문에 어댑터 패턴이 인터페이스로 변환, 클라이언트 인터페이스는 더 바람직 나타냅니다. 세 가지 주요 유형 : 유형 어댑터, 어댑터는 객체 모드, 인터페이스 어댑터 모드입니다.

   어댑터 : 열두, 새로운 클래스 C가이 인터페이스, 클래스 C, 방법 구현 방법이 비어 있고, B 서브 클래스를 구현하는 것을 특징으로하는 경우도 방법은 인터페이스했지만 그의 B 소집단을 달성하기 만 구현할 필요 클래스 C를 상속 방법은 재 작성해야합니다.

 

식스 : MVC 디자인 패턴

  목표는 타의 추종을 불허하는 인터페이스 클래스로 인한 호환성 문제를 제거하기 때문에 어댑터 패턴이 인터페이스로 변환, 클라이언트 인터페이스는 더 바람직 나타냅니다. 세 가지 주요 유형 : 유형 어댑터, 어댑터는 객체 모드, 인터페이스 어댑터 모드입니다.

    

  

추천

출처www.cnblogs.com/in-the-game-of-thrones/p/11299210.html