learning之享元模式

来源:互联网 发布:帕克斯软件 编辑:程序博客网 时间:2024/06/05 18:42

享元模式:享元模式以共享的方式高效地支持大量细粒度对象的重用,就是对象复用,以节省内存和创建消耗。


Flyweight:享元对象抽象基类或者接口;
ConcreteFlyweight:具体的共享的享元对象;
UnsharedConcreteFlyweight:非共享部分;

FlyweightFactory:工厂方法管理享元对象池和创建享元对象。


图片来自网络:


实例:

//抽象基类或接口public interface Car {    public void run();}

//具体的对象public class ConcreatCar implements Car{    private String carInfo;    public ConcreatCar(String state){        carInfo=state;    }    @Override    public void run() {        System.out.print("car state :"+carInfo);    }}

//享元对象工厂方法public class CarFactory {    HashMap<String,Car> cars=new HashMap<>();    public Car getCar(String key){        if(cars.get(key)==null){            ConcreatCar concreatCar=new ConcreatCar(key);            cars.put(key,concreatCar);            return concreatCar;        }else {            return cars.get(key);        }    }    public int size(){        return cars.size();    }}


public class Test {    public static void main(String[] args){        CarFactory carFactory=new CarFactory();        Car concreatCar1=carFactory.getCar("yellow");        Car concreatCar2=carFactory.getCar("blue");        Car concreatCar3=carFactory.getCar("yellow");        Car concreatCar4=carFactory.getCar("yellow");        System.out.print("Cars pool size: "+carFactory.size());//size=2    }}