享元模式实例,享元模式和单例模式
00-1010定义原理类图案例需求方案:元共享模式分析总结
00-1010 flyweight模式也称FlyWeight模式,利用共享技术有效支持大量细粒度对象,FlyWeight模式是实现池技术的重要方式。
目录
Flyweight:一个抽象的元角色,是一个抽象的产品类别,它定义了对象的内部和外部状态。ConcreteFlyweight:一个具体的元角色,一个具体的产品类别,实现抽象的角色,实现具体的业务逻辑。UnsharedConcreteFlyweight:一个非共享的角色,这个角色也可能出现在元象模式:FlyweightFactory:元象工厂类,用来构建一个池的容器。同时,远翔工厂将提供公共方法(从池中获取对象,获取池中对象的总数,根据key获取对象,)。Client:将使用元象模式来完成业务逻辑。
定义
00-1010我们接了一个小型的外包项目,为客户老王做了一个产品展示网页。老王的朋友觉得效果不错,希望做这样的产品展示网页,但他们的要求有些不同。
1)部分客户要求网页以新闻形式发布。
2)有客户要求网页以博客的形式发布。
3)部分客户希望网页以微信微信官方账号的形式发布。
00-1010定义网站用户类别
公共类用户{私有字符串名称;公共用户(字符串名称){ this.name=name} public String getName(){ return name;} public void set name(String name){ this . name=name;}}定义网站的抽象类3354享受元角色。
公共抽象类网站{公共抽象void show(用户User);}定义具体网站类——具体元角色。
类具体网站扩展网站{//网站的发布形式是私有字符串类型;public concrete website(String type){ this . type=type;} @ override public void show(user user){ system . out . println(将网站发布为 type );System.out.println(网站用户名为: user . getname());}}定义网站工厂类3354享受元工厂类。
class website factory {//创建一个HashMap并扮演池的角色:Private hashmap string,concrete website pool=new HashMap string,concrete website();//根据类型判断,得到对象公共网站getwebsite (string类型){if(!pool . contains key(type)){ pool . put(type,new concrete website(type));} return pool . get(type);}//获取池中对象总数public int getwebsitecount(){ system . out . println(当前池中对象总数: pool . size()));返回pool . size();}}定义客户端测试类
public class client { public static void main(string[]args){//创建一个元工厂website factory website factory=new website factory();website news=website factory . get website( news );News.show(新用户(老李));website we chat=website factory . get website( blog );微信. show(新用户(高));website factory . getwebsitecount();website we chat 1=website factory . get website(微信);微信. show(新用户(老沈));website factory . getwebsitecount();}}检查测试结果
00-1010,根据不同类型的需求,生成相应的具体元对象,实现需求。其中,元对象的信息分为两部分,内部状态和外部状态。内部对象是指对象共享的信息,存储在共享对象中,不随环境变化而变化,外部对象随环境变化而变化,不能共享。
原理类图
优势
节省内存空间。当需要频繁创建重复对象时,元共享模式只会创建一次,因此对系统内存空间的需求大大降低。
提高使用效率。您只能创建一个可重复的对象一次,然后当您再次访问它时直接从池中取出它。相应的速度会更快,效率会更高。有限的元共享模式将得到改进。
劣势
元共享模式会增加系统的复杂性。元共享模式需要由工厂类来控制。如果盲目使用,会增加系统逻辑的复杂性。
使用场景
元模式最经典的使用场景是我们的各种池技术。
当系统中存在大量对象时,这些对象会消耗大量内存,可以考虑使用元共享模式。
关于Java设计模式的元模型示例的详细解释,本文到此结束。有关Java元模型的更多信息,请搜索热门IT以前的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。