享元模式(Flyweight Pattern)主要用於減小建立的對象數量,並減小內存佔用並提升性能。 這種類型的設計模式屬於結構模式,由於該模式提供了減小對象計數的方法,從而改善應用的對象結構。設計模式
第一步:建立一個Shape接口,代碼以下dom
/** * @author 歐陽飄 */ public interface Shape { void draw(); } |
第二步:建立一個實現相同接口的具體類Circleide
package com.test.flyPatternMode;性能 /** public Circle(String color){ public void setX(int x) { public void setY(int y) { public void setRadius(int radius) { @Override |
第三步:建立一個工廠根據給定的信息生成具體類的對象
/** public class ShapeFactory { //若是不存在, 那麼就建立對象, 若是存在那麼直接從Map中去取 |
第四步:使用工廠並經過傳遞諸如顏色的信息來得到具體類的對象
/** public class FlyweightPatternDemo { private static final String colors[] = { "Red", "Green", "Blue", "White", "Black" }; public static void main(String[] args) { for(int i=0; i < 20; ++i) { Circle circle = (Circle)ShapeFactory.getCircle(getRandomColor()); circle.setX(getRandomX()); circle.setY(getRandomY()); circle.setRadius(100); circle.draw(); } } private static String getRandomColor() { return colors[(int)(Math.random()*colors.length)]; } private static int getRandomX() { return (int)(Math.random()*100 ); } private static int getRandomY() { return (int)(Math.random()*100); } } |