设计模式之结构型-享元模式(11)

来源:互联网 发布:程序员的梦工厂 编辑:程序博客网 时间:2024/06/03 14:32

接着学习享元模式
享元模式定义:运用共享技术有效的支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。
下面是享元模式的类图
这里写图片描述

其中:
Flyweight:抽象享元角色,享元对象的基类或者接口。
FlyweightFactory:享元工厂,负责管理享元对象池,创建享元角色。
ConcreteFlyweight:具体享元角色,实现Flyweight

下面我们举一个手机的例子来代码模拟一下享元模式

//单个的手机public class Phone  {    String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
//享元手机工厂,单例模式public class PhoneFactory {    private Map<String,Phone> pool;    private  volatile static PhoneFactory instance;    private PhoneFactory() {        pool =new HashMap<>();    }    public  static PhoneFactory getInstance(){        if (instance!=null){            synchronized (PhoneFactory.class){                if (instance!=null){                    instance=new PhoneFactory();                }            }        }        return instance;    }    public  void addPhone(Phone phone){        if (phone!=null&& pool.containsKey(phone.getName())){            pool.put(phone.getName(),phone);        }    }    public  Phone getPhone(String phoneName){        return pool.get(phoneName);    }}
//测试类public class Test  {    public static void main(String[] args) {        Phone phone1=new Phone();        Phone phone2=new Phone();        Phone phone3=new Phone();        phone1.setName("小米5");        phone2.setName("小米6");        phone3.setName("小米6");        PhoneFactory instance = PhoneFactory.getInstance();        instance.addPhone(phone1);        instance.addPhone(phone2);        instance.addPhone(phone3);    }}

享元模式大量降低内存消耗,例如线程池的使用,数据库连接池的使用,提高性能,但是增加了系统的复杂程度,

阅读全文
1 0
原创粉丝点击