, fluevægt mønster primært bruges til at reducere antallet af genstande, der er skabt, og til at mindske hukommelse fodaftryk og øge ydeevnen.denne type af design - kommer under strukturelle mønster, som dette mønster er måder at nedsætte objekt tæller således forbedre objekt struktur for anvendelsen, fluevægt mønster forsøger at genbruge eksisterende lignende genstande ved opbevaring og skaber nye formål, når der ikke findes tilsvarende formål.vi vil vise det - ved at trække 20 cirkler på forskellige steder, men vi vil skabe kun 5 objekter.kun fem farver er til rådighed, så farve ejendom benyttes til kontrol af allerede eksisterende, cirkel, genstande, gennemførelse, er vi ved at skabe en grænseflade, form og konkrete klasse, cirkel, gennemføre, form, grænseflade.en fabrik, klasse, shapefactory defineres som et næste skridt.,, shapefactory, har en, hashmap, af cirkel med centrale som farve, cirkel, objekt.når en anmodning er at skabe en kreds af særlige farve, shapefactory, det kontrollerer den cirkel objekt i sit, hashmap, hvis formål, cirkel, fandt, at objektet er vendt tilbage eller en ny objekt er skabt, opbevares i hashmap til fremtidig brug og vendte tilbage til klient.,, flyweightpatterndemo, vores denne klasse, vil bruge, shapefactory, for at få en, form, objekt.det vil give oplysninger (, rød /grønne og blå /sort /hvid,), shapefactory, for at få den kreds af ønskede farve, det har brug for.,, trin 1, skabe en grænseflade,.,, form -, offentlig grænseflade form {tomrum draw();}, trin 2, skabe konkrete klasse gennemførelse samme grænseflade,.,, kreds - og offentlige klasse cirkel gennemfører form (private snor farve; private int x; private int y; private int radius; offentlige cirkel (string farve) (this.color = farve;} offentlige tomrum setx int (x) {. x = x) offentlige tomrum sety (int y) (. y = y.} offentlige tomrum setradius int (radius) (this.radius = radius} @ tilsidesætte offentlige tomrum draw() {system. println ("cirkel: draw() [farve."+ farve + "x" + x + "y" + r + ", radius:" + radius)}}, trin 3, oprettelse af en fabrik til at generere genstand for konkrete klasse baseret på oplysninger, shapefactory -, import java.util.hashmap; offentlige klasse shapefactory {menig static endelig hashmap < snor, form > circlemap = nye hashmap(); offentlige statisk form getcircle (string farve) {cirkel cirkel = (ring) circlemap. kom (farve), hvis (cirkel = = null) {cirkel = ny cirkel (farve), circlemap. (farve, cirkel); system. println ("at skabe cirkel af farve:" + farve)} tilbage cirkel.}}, trin 4, anvende den fabrik bliver genstand for konkrete klasse gennem en information, som f.eks. farve.,, flyweightpatterndemo.java,, offentlige klasse flyweightpatterndemo {menig static sidste snor farver [] = ("rød", "grønne", "blå", "hvide", "sort"}; offentlige statisk tomrum vigtigste (string [] args) (for int (i = 0. jeg < 20 + + i) {cirkel cirkel = (ring) shapefactory. getcircle (getrandomcolor()); cirkel. setx (getrandomx()); cirkel. sety (getrandomy()); cirkel. setradius (100); cirkel. draw();}} private statiske snor getrandomcolor() {tilbage farver [(int) (matematik. random() * farver. længde)]} menig static int getrandomx() {afkast (int) (matematik. random() * 100);} menig static int getrandomy() {afkast (int) (matematik. random() * 100);}}, løntrin 5, kontrollere produktionen, skabe cirkel af farve.: Black Circle: Draw() [Color : Black, x : 36, y :71, radius :100 Creating circle of color : Green Circle: Draw() [Color : Green, x : 27, y :27, radius :100 Creating circle of color : White Circle: Draw() [Color : White, x : 64, y :10, radius :100 Creating circle of color : Red Circle: Draw() [Color : Red, x : 15, y :44, radius :100 Circle: Draw() [Color : Green, x : 19, y :10, radius :100 Circle: Draw() [Color : Green, x : 94, y :32, radius :100 Circle: Draw() [Color : White, x : 69, y :98, radius :100 Creating circle of color : Blue Circle: Draw() [Color : Blue, x : 13, y :4, radius :100 Circle: Draw() [Color : Green, x : 21, y :21, radius :100 Circle: Draw() [Color : Blue, x : 55, y :86, radius :100 Circle: Draw() [Color : White, x : 90y: 70, radius: 100 cirkel: draw() [farve: grøn, x: 78 y: 3, radius: 100 cirkel: draw() [farve: grøn, x: 64, y: 89, radius: 100 cirkel: draw() [farve: blå, x - 3, y: 91, radius: 100 cirkel: draw() [farve: blå, x: 62, y: 82, radius: 100 cirkel: draw() [farve: grøn, x: 97, y: 61, radius: 100 cirkel: draw() [farve: grøn, x: 86 y: 12, radius: 100 cirkel: draw() [farve: grøn, x - 38, y: 93, radius: 100 cirkel: draw() [farve: rød x: 76 - 82, radius: 100 cirkel: draw() [farve: blå, x: 95 - 82, radius: 100
former for design fluevægt mønster
Previous:former for design facade -
Next Page:former for design proxy mønster