이 기사에서는 Java 디자인 패턴의 즐거움 모드를 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
개념을 설명하십시오. 즉, 시스템에 여러 개의 동일한 객체가있는 경우 하나의 사본 만 공유하고 각각의 개체를 인스턴스화 할 필요가 없습니다. 예를 들어, 텍스트 시스템에서 각 문자는 객체로 정의되므로 52 개의 상단 및 소문자가 있으므로 52 개의 객체를 정의해야합니다. 1m 텍스트가 있으면 문자가 너무 많습니다. 각 문자가 객체를 정의하면 메모리가 오래 전에 폭발했을 것입니다. 그런 다음 각 문자가 객체를 공유하면 리소스를 크게 저장합니다.
플라이급 모드에서는 다양한 객체가 생성되므로 공장 모드는 종종 플라이급 모드로 나타납니다. 플라이급 내부 상태는 공유하는 데 사용됩니다. Flyweight Factory는 객체를 내부 상태에 보관하기 위해 객체 스토리지 풀 (Flyweight Pool)을 유지 관리 할 책임이 있습니다. Flyweight Mode는 프로그램 효율성과 성능을 향상시키는 모드로 프로그램의 실행 속도를 크게 높일 수 있습니다. 다음과 같이 많은 신청서가 있습니다.
먼저 추상 플라이급 클래스를 정의합니다.
Package Flyweight; Public Abstract Class Flyweight {Public Abstract void Operation ();}특정 클래스 구현 :
패키지 플라이급; 공개 클래스 ConcreteFlyweight 확장 플라이 웨이트 {개인 문자열 문자열; public concreteflyweight (String) {String = str;} public void operation () {System.out.println ( "Concrete --- flyweight :" + string);}}공장 방법 클래스 구현 :
패키지 flyweight; import java.util.hashtable; public class flyweightfactory {private hashtable flyweights = new Hashtable();//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. null){//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------이 공장 방법 클래스는 매우 중요합니다. 여기에 자세한 설명이 있습니다.
해시 가능은 각 객체를 저장하기 위해 1로 정의됩니다. 인스턴스화 할 객체는 2에서 선택되고 6시에 반환 될 객체가 선택됩니다. 해시 테이블에 선택할 객체가 없으면 가변 플라이 웨이트는 NULL이고 새로운 플라이급이 해시 가능에 저장되어 개체가 반환됩니다.
마지막으로 Flyweight의 Call을 살펴 보겠습니다.
패키지 flyweight; import java.util.hashtable; public class flyweightpattern {flyweightfactory factory = new flyweightfactory (); flyweight fly2; flyweight fly3; flyweight fly4; flyweight fly4; flyweight fly6;/***//** Flyweightpattern*/public weightpattern () {fly1 = = {) Factory.getFlyweight ( "Google"); Fly2 = Factory.getFlyweight ( "QUTR"); FLY3 = FACTORY.GETFLYWEAGE ( "Google"); Fly4 = Factory.GetFlyweight ( "Google"); Fly5 = Factory.getFlyweight ( "Google"); Fly6 = Factory.GetFlyweight ( "Google"); showflyweight () {fly1.operation (); fly2.operation (); fly3.operation (); fly4.operation (); fly4.operation (); fly6.operation (); int objsize = factory.getflyweightsize (); system.out.println ( "objsize =" + objsize); args) {system.out.println ( "플라이급 패턴!"); flyweightpattern fp = new flyweightpattern (); fp.showflyweight ();}}실행 결과는 다음과 같습니다.
콘크리트 --- 플라이급 : Google
콘크리트 --- 플라이급 : QUTR
콘크리트 --- 플라이급 : Google
콘크리트 --- 플라이급 : Google
콘크리트 --- 플라이급 : Google
콘크리트 --- 플라이급 : Google
objsize = 2
우리는 6 개의 객체를 정의했으며 그 중 5 개는 동일합니다. 플라이급 모드의 정의에 따르면 "Google"은 객체를 공유해야합니다. 실제 객체 수에는 2 개의 객체 만 있음을 알 수 있습니다.
요약 :
플라이급 모드는 복잡한 시스템에 많은 메모리 공간을 절약 할 수 있기 때문에 매우 중요합니다. Java 언어에서 문자열 유형은 백과 사전 모드를 사용합니다. 문자열 객체는 최종 유형이며 일단 생성되면 변경할 수 없습니다. Java에서는 상수 풀에 문자열 상수가 있습니다. Java는 문자열 상수에 상수 풀에 사본이 하나뿐입니다. 문자열 a = "abc", 여기서 "ABC"는 문자열 상수입니다.
Java에 익숙한 사람들은 다음 예를 알아야합니다.
문자열 a = "hello"; 문자열 b = "hello"; if (a == b) system.out.println ( "ok"); elsesystem.out.println ( "error");
출력 결과는 다음과 같습니다. 조건이 두 개의 A와 B의 주소를 비교하거나 메모리 공간이라고 할 수 있음을 알 수 있습니다.
핵심 요약 : 공유 할 수있는 객체, 즉 반환 된 동일한 유형의 개체는 실제로 동일한 인스턴스입니다. 클라이언트가 객체를 생성 해야하는 경우 공장은이 객체의 인스턴스가 존재하는지 여부를 감지합니다. 존재하면이 객체 인스턴스를 직접 반환하십시오. 존재하지 않으면 만들고 저장하십시오. 이것은 싱글 톤 패턴의 의미가 있습니다. 일반적으로 공장 클래스에는 하시 테이블, 벡터 등과 같은 객체를 저장하기위한 세트 유형 멤버 변수가 있습니다. Java, 데이터베이스 연결 풀, 스레드 풀 등은 Enyuan 모드를 사용하는 응용 프로그램입니다.
더 많은 Java 관련 컨텐츠를 보려면이 사이트에 관심이있는 독자는 "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약 및"Java Cache Cache Operation Tips "의 주제를 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.