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

网站关键词优化遇到的情况和解决方法网页设计和网站建设书

网站关键词优化遇到的情况和解决方法,网页设计和网站建设书,广州公司注册流程和条件,郴州小程序开发公司本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中#xff0c;您将深入研究大量的设计模式#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 #xff01; 目录 … 本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中您将深入研究大量的设计模式并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因并了解何时以及如何应用模式中的每一个。 在这里查看 目录 1.简介 2.什么是原型设计模式 3.解决问题 4.何时使用原型设计模式 5. JDK中的原型模式 6.下载源代码 1.简介 在面向对象编程中您需要使用对象。 对象彼此交互以完成工作。 但是有时候创建沉重的对象可能会变得很昂贵并且如果您的应用程序需要太多此类对象包含几乎相似的属性则可能会带来一些性能问题。 让我们考虑一个应用程序需要一些访问控制的场景。 用户可以根据提供给他们的访问权限来使用应用程序的功能。 例如有些用户有权访问由应用程序生成的报告而有些则不能。 他们中有些甚至可以修改报告而有些只能读取报告。 一些用户还具有添加或什至删除其他用户的管理权限。 每个用户对象都有一个访问控制对象用于提供或限制应用程序的控件。 此访问控制对象是一个笨重的对象其创建非常昂贵因为它需要从某些外部资源例如数据库或某些属性文件等中获取数据。 我们也不能与同一级别的用户共享同一访问控制对象因为管理员可以在运行时更改权限并且同一级别的其他用户可以具有不同的访问控制。 一个用户对象应具有一个访问控制对象。 我们可以使用原型设计模式来解决此问题方法是一次在所有级别上创建访问控制对象然后在需要时向用户提供该对象的副本。 在这种情况下从外部资源获取数据仅发生一次。 下次通过复制现有对象来创建访问控制对象。 每次发送请求时都不会从头开始创建访问控制对象。 这种方法肯定会减少对象创建时间。 在深入探讨解决方案之前请让我们进一步了解原型设计模式。 2.什么是原型设计模式 原型设计模式用于指定要使用原型实例创建的对象的种类并通过复制此原型来创建新对象。 其概念是复制现有对象而不是从头开始创建新实例这可能包括昂贵的操作。 现有对象充当原型并包含对象的状态。 仅在需要时新复制的对象才能更改相同的属性。 这种方法节省了昂贵的资源和时间尤其是在对象创建很繁重的过程中。 在Java中有某些方法可以复制对象以创建一个新对象。 实现此目的的一种方法是使用Cloneable接口。 Java提供了clone方法该方法从Object类继承Object 。 您需要实现Cloneable接口并根据需要覆盖此clone方法。 图1 原型 声明一个用于克隆自身的接口。 具体原型 实现克隆自身的操作。 客户 通过要求原型克隆自己来创建新对象。 原型使您可以通过向客户端注册原型实例来将新的具体产品类合并到系统中。 3.解决问题 在此解决方案中我们将使用克隆方法来解决上述问题。 package com.javacodegeeks.patterns.prototypepattern;public interface Prototype extends Cloneable {public AccessControl clone() throws CloneNotSupportedException;} 上面的接口扩展了Cloneable接口并包含方法clone 。 该接口由要创建原型对象的类实现。 package com.javacodegeeks.patterns.prototypepattern;public class AccessControl implements Prototype{private final String controlLevel;private String access;public AccessControl(String controlLevel,String access){this.controlLevel controlLevel;this.access access;}Overridepublic AccessControl clone(){try {return (AccessControl) super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();}return null;}public String getControlLevel(){return controlLevel;}public String getAccess() {return access;}public void setAccess(String access) {this.access access;}} AccessControl类实现Prototype接口并覆盖clone方法。 该方法调用超类的clone方法并将对象向下转换为AccessControl类型后返回该对象。 clone方法将引发CloneNotSupportedException 该方法本身会捕获该异常。 该类还包含两个属性 controlLevel用于指定此对象包含的控制级别。 级别取决于要使用它的用户类型例如USERADMINMANAGER等。 另一个属性是access ; 它包含用户的访问权限。 请注意为简单起见我们将访问权限用作String类型属性。 这可以是Map类型可以包含分配给用户的长访问权限的键值对。 package com.javacodegeeks.patterns.prototypepattern;public class User {private String userName;private String level;private AccessControl accessControl;public User(String userName,String level, AccessControl accessControl){this.userName userName;this.level level;this.accessControl accessControl;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;}public String getLevel() {return level;}public void setLevel(String level) {this.level level;}public AccessControl getAccessControl() {return accessControl;}public void setAccessControl(AccessControl accessControl) {this.accessControl accessControl;}Overridepublic String toString(){return Name: userName, Level: level, Access Control Level:accessControl.getControlLevel(), Access: accessControl.getAccess();}} User类具有userName level和对分配给它的AccessControl的引用。 我们使用了一个AccessControlProvider类该类预先创建和存储可能的AccessControl对象。 当有对AccessControl对象的请求时它将返回一个通过复制存储的原型创建的新对象。 package com.javacodegeeks.patterns.prototypepattern;import java.util.HashMap; import java.util.Map;public class AccessControlProvider {private static MapString, AccessControlmap new HashMapString, AccessControl();static{System.out.println(Fetching data from external resources and creating access control objects...);map.put(USER, new AccessControl(USER,DO_WORK));map.put(ADMIN, new AccessControl(ADMIN,ADD/REMOVE USERS));map.put(MANAGER, new AccessControl(MANAGER,GENERATE/READ REPORTS));map.put(VP, new AccessControl(VP,MODIFY REPORTS));}public static AccessControl getAccessControlObject(String controlLevel){AccessControl ac null;ac map.get(controlLevel);if(ac!null){return ac.clone();}return null;} } getAccessControlObject方法根据传递给它的controlLevel获取存储的原型对象并将新创建的克隆对象返回到客户端代码。 现在让我们测试代码。 package com.javacodegeeks.patterns.prototypepattern;public class TestPrototypePattern {public static void main(String[] args) {AccessControl userAccessControl AccessControlProvider.getAccessControlObject(USER);User user new User(User A, USER Level, userAccessControl);System.out.println(************************************);System.out.println(user);userAccessControl AccessControlProvider.getAccessControlObject(USER);user new User(User B, USER Level, userAccessControl);System.out.println(Changing access control of: user.getUserName());user.getAccessControl().setAccess(READ REPORTS);System.out.println(user);System.out.println(************************************);AccessControl managerAccessControl AccessControlProvider.getAccessControlObject(MANAGER);user new User(User C, MANAGER Level, managerAccessControl);System.out.println(user);} } 上面的代码将产生以下输出 Fetching data from external resources and creating access control objects... ************************************ Name: User A, Level: USER Level, Access Control Level:USER, Access: DO_WORK Changing access of: User B Name: User B, Level: USER Level, Access Control Level:USER, Access: READ REPORTS ************************************ Name: User C, Level: MANAGER Level, Access Control Level:MANAGER, Access: GENERATE/READ REPORTS 在上面的代码中我们在USER级别创建了一个AccessControl对象并将其分配给UserA。然后又将另一个AccessControl对象分配给User B但是这次我们更改了User B的访问权限。最后MANAGER用户C的级别访问控制。 getAccessControlObject用于获取AccessControl对象的新副本当我们更改用户B的访问权限时可以清楚地看到这一点而对于用户A的访问权限没有更改只需再次打印用户A对象。 这确认clone方法工作正常因为它返回对象的新副本而不是指向同一对象的引用。 4.何时使用原型设计模式 当系统应独立于其产品的创建组成和表示方式时请使用原型模式。 和 在运行时指定要实例化的类时例如通过动态加载 要么 为了避免建立与产品的类层次结构平行的工厂的类层次结构 要么 当一个类的实例只能具有几种不同的状态组合之一时。 安装相应数量的原型并克隆它们而不是每次都以适当的状态手动实例化类可能会更方便。 5. JDK中的原型模式 java.lang.Object#clone() java.lang.Cloneable 6.下载源代码 这是关于原型设计模式的课程。 您可以在此处下载源代码 PrototypePattern-Project 翻译自: https://www.javacodegeeks.com/2015/09/prototype-design-pattern.html
http://www.zqtcl.cn/news/44272/

相关文章:

  • 2014年网站设计趋势惠州seo网络推广
  • 甘谷县建设局网站网站建设保密协议
  • 上海网站建设网页制合肥建设工程质量监督局网站
  • 库尔勒北京网站建设wordpress文章新窗口打开
  • 国家公示网营业执照南昌百度推广优化排名
  • 网站前台后台模板网络营销是什么工作职位
  • 在哪个网站开发国外客户滨湖网站建设
  • 网站如何添加百度统计网页游戏排行榜2024
  • 做培训网站沈阳新联会是什么组织做什么
  • 网站的设计步骤wordpress搭建个人博客
  • 菏泽市建设银行网站沈阳建设工程信息网 最佳中项网
  • wordpress 新闻采集站仿站建站教程
  • 莆田做网站建设ui设计公司排行榜
  • 高埗镇网站建设宿迁房产网信息网
  • 专业做招聘的网站wordpress安装不
  • 青岛网站建设制作公司云主机安装wordpress
  • 淄博网站制作定制优化如何在WordPress上传主题目录
  • 网络营销 网站wordpress 必备
  • 面膜网站广告怎么做东莞网络推广费用
  • 网站建设实训总结200您身边的网站建设专家
  • 做学分网站flash个人网站片头
  • 织梦手机网站模板删除不了电商网站系统建设
  • 大型网站建设做外贸的网站如何选择服务器
  • 网站的产品中心怎么做宽屏大气网站模板
  • 网站被k后换域名 做301之外_之前发的外链怎么办电子商务网站建设的可行性分析
  • 织梦cms网站更新怎么制作ppt用什么软件
  • 做网站建设培训企业网站建设的三种方式并举例
  • 深圳网a深圳网站建设北京房山idc机房
  • 网站备案代码如何加到商丘企业网站建设费用多少钱
  • 大型做网站的公司有哪些产品包装设计公司网站