当前位置: 首页 > news >正文

有关网站开发的参考文献银川网站建设网络

有关网站开发的参考文献,银川网站建设网络,俄罗斯最新新闻消息,个人静态网站首页怎么做享元模式 1.享元模式含义 享元模式,运用共享技术有效地支持大量细粒度的对象。 其实享元模式很好理解,就是共享元数据的意思。比如一个小狗类对象,里面的属性有头,耳朵,眼睛,毛色这几个属性,…

享元模式

1.享元模式含义

享元模式,运用共享技术有效地支持大量细粒度的对象。

其实享元模式很好理解,就是共享元数据的意思。比如一个小狗类对象,里面的属性有头,耳朵,眼睛,毛色这几个属性,然后需要实例化几个小狗对象出来,但是这几个小狗对象的头、耳朵、眼睛属性值都是相同的,只有毛色是不一样的,那么这种情况下这几个小狗属性就可以共用一个bean的头、耳朵、眼睛属性,然后再各自重新实现自己的不同的毛色属性值。这样的共用基础元数据的模式,就叫享元模式。

2.代码示例

下面以用户登录网站的代码作为示例讲解享元模式

2.1User类

public class User {private String name;public User(String name) {this.name = name;}public String getName() {return name;}
}

2.2WebSite类

WebSite是网站抽象类,定义了一个展示当前登录用户的抽象方法

public abstract class WebSite {public abstract void user(User user);
}

2.3ConcreteWebSite类

ConcreteWebSite是WebSite的具体实现类

public class ConcreteWebSite extends WebSite{private String name;public ConcreteWebSite(String name) {this.name = name;}@Overridepublic void user(User user) {System.out.println("网站分类:" + name + "用户:" + user.getName());}
}

2.4WebSiteFactory类

WebSiteFactory类是WebSIte的工厂类,负责为客户端生成WebSite子类对象

public class WebSiteFactory {private Map<String, WebSite> webSiteMap = new HashMap<>();public WebSite getWebSiteCategory(String name){if (!webSiteMap.containsKey(name)) {webSiteMap.put(name, new ConcreteWebSite(name));}return webSiteMap.get(name);}public int getWebSiteCount(){return webSiteMap.size();}
}

2.5测试类

public class MainApp {public static void main(String[] args) {WebSiteFactory factory = new WebSiteFactory();WebSite bilibili = factory.getWebSiteCategory("哔哩哔哩");bilibili.user(new User("秋秋"));WebSite bilibili2 = factory.getWebSiteCategory("哔哩哔哩");bilibili2.user(new User("张三"));WebSite bilibili3 = factory.getWebSiteCategory("哔哩哔哩");bilibili3.user(new User("李四"));WebSite csdn = factory.getWebSiteCategory("CSDN");csdn.user(new User("王五"));WebSite csdn1 = factory.getWebSiteCategory("CSDN");csdn1.user(new User("领克03"));System.out.println("网站实例对象个数为:" + factory.getWebSiteCount());}
}

运行结果

网站分类:哔哩哔哩用户:秋秋
网站分类:哔哩哔哩用户:张三
网站分类:哔哩哔哩用户:李四
网站分类:CSDN用户:王五
网站分类:CSDN用户:领克03
网站实例对象个数为:2

从运行结果可以看出,一共有3五个用户登录了网站,但是最终网站的实例对象个数仅为2,也就是说,登录哔哩哔哩网站的用户共享了哔哩哔哩网站实例对象,登录CSDN网站的用户共享了CSDN网站实例对象。这就是享元模式,五个用户,分别共享了两个网站的实例对象。

如果没有使用享元模式,那么五个对象登录网站,就要实例化五个网站对象,但是如果真的实例化五个网站对象的话,就是浪费内存空间了,因为这五个网站对象完全一模一样,仅仅是登录的用户名称不一样,改为享元模式,用户共享网站实例对象,这样就可以节省很大的内存开销了。

3.总结

享元模式里面涉及到两个概念,内部状态与外部状态

  • 内部状态:内部状态就是在享元对象内部,并且不会岁环境改变而改变的部分,比如ConcreteWebSite类中的name属性,可以认为是内部状态,虽然它的值也会被改变,但是相对来说,被改变的几率比较小,可以认为是内部状态
  • 外部状态:外部状态跟内部状态相反,它是随着环境的改变而改变。不可以共享的状态就是外部状态,比如ConcreteWebSite类的User对象

如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用享元模式,还有救赎对象的大多数状态可以为外部状态。

如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。

http://www.yayakq.cn/news/120276/

相关文章:

  • WordPress多用户建站seo排名优化方法
  • wordpress如何添加网站地图可以做长页海报的网站
  • 办网站需要什么室内设计培训班多少钱
  • 莱芜装修网站去除wordpress版本号
  • 营销型网站建设新感觉建站wordpress登录循环
  • 云南网络公司网站建设网站建设公司推荐 知乎
  • wordpress建立视频网站手机app免费制作
  • 网站包括哪些内容吗顺德大良网站建设开发
  • 陕西住房和建设部网站网站seo 优化
  • 网站地图灰色效果的怎么做的网站开发z亿玛酷1流量订制
  • 上海建网站wordpress+做仿站
  • 网站自动提交收录谁会写网站代码
  • 网站布局设计排版洛阳便宜网站建设价格
  • 设计网站架构网站建设 国鸿
  • 宁波市建设工程监理协会网站青岛网站建设 新视点
  • 手机上建设网站建设直播网站需要哪些许可证
  • 网站每年都要备案吗网页平面设计培训
  • h5网站制作广州宣传片制作公司
  • 济南网站设计哪家好ps里怎么做网站
  • 网站制作过程流程wordpress搬家dz论坛
  • 电子 网站建设申请过程把代码到wordpress
  • 美轮美奂的网站建设网站怎么吸引流量
  • 网站链接跳转怎么做陕西省住房和建设厅官网
  • 网站ftp查询哪个网站能看到医生做的全部手术
  • 比较好约的网站设计自己能做app软件吗
  • 漫画风格网站哪里有手机网站建设联系方式
  • seo优化网站查询免备案虚拟主机1元
  • 快速达建网站怎么给网站做优化
  • 网站开发人员职能qq手机网页版在线登录
  • 合肥公司建设网站重庆市建设工程信息网上查询