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

浪潮做网站建设吗网站建设技术方案模板下载

浪潮做网站建设吗,网站建设技术方案模板下载,网络营销推广有哪些方法,自我介绍html网页模板设计模式 工厂方法如您所知#xff0c;“工厂方法模式”或俗称“工厂设计模式”是“创意设计模式”类别下的一种设计模式。 模式背后的基本原理是#xff0c;在运行时#xff0c;我们根据传递的参数获得类似类型的对象。 关于这种模式的文章很多#xff0c;开发人员可以通过… 设计模式 工厂方法 如您所知“工厂方法模式”或俗称“工厂设计模式”是“创意设计模式”类别下的一种设计模式。 模式背后的基本原理是在运行时我们根据传递的参数获得类似类型的对象。 关于这种模式的文章很多开发人员可以通过各种方式来实现它。 在本文中我将向您展示如何创建一种更好且最有效的工厂设计模式设计方法。 技术性 正如我已经告诉您的那样在工厂设计的情况下我们将在运行时获得一个类似类型的对象这样对象的基础实现将位于屏幕后面。 让我们考虑一个简单的方法。 让我们考虑一个可以是Male或Female的Person对象。 在运行时我们仅应考虑人的行为而不应考虑性别。 作为传统方法我们创建一个Person接口并创建两个实现类例如MalePerson和FemalePerson。 基于运行时性别数据我们传递到Factory类的Factory方法在此我们确定性别类型是Male还是Female因此我们创建特定类的实例并返回引用类型对象。 这种方法听起来不错我们在许多开发活动中都采用了这种方法。 在细粒度的多线程应用程序中我们可以确保它是有效的方法吗 表现如何呢 还有其他方法吗 是的我们愿意。 让我们考虑另一个实时示例。 考虑一个组织中的某个情况该雇员可以担任CEOCTOCFO开发人员测试工程师人力资源人员安全性等。如果您想根据组织了解雇员的角色您将怎么办 您将如何创建更好的工厂设计以便我们可以轻松地找到角色并且不应有性能损失 您是否会通过提供多个if子句来采用相同的传统方法 您可以提出一个论点我们应该使用切换条件。 很好……让我们看看传统方法然后让我们测量时间。 让我们以传统方式采用工厂设计。 package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public interface Roles {public String getRole(); } 上面的接口用作一种类型因为组织中可以有各种类型的角色。 它有一个称为“ getRole”的方法用于指定员工角色的描述。 让我们为组织中CEOCTO和CFO的合适角色设计实现类。 package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public class CEORoles implements Roles {public String getRole() {return CEO is the supreme head of the company;} }package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public class CFORoles implements Roles {Overridepublic String getRole() {return CFO is the finance head of a company;} }package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public class CTORoles implements Roles {Overridepublic String getRole() {return CTO is the technology decision maker of a company;} } 现在我们必须考虑从中动态创建对象的工厂。 让我们看下面的代码。 package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public abstract class EmployeeFactory {public static Roles getRole( String type ){Roles roles null;if( type.equals(cfo))roles new CFORoles();else if( type.equals(cto))roles new CTORoles();else if( type.equals(ceo))roles new CEORoles();return roles;} } 让我们编写一个简单的测试工具类来验证设计。 package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public class TestTraditionalFactoryDesign {public static void main(String[] args) {String type ceo;long startTime System.nanoTime();String role EmployeeFactory.getRole(type).getRole();System.out.println(Role ::: role);long endTime System.nanoTime();System.out.println(Time difference ::: (endTime-startTime) nano seconds);}} 如果运行上述程序则以下是我系统的输出。 仅供参考我的系统具有4 GB RAM和I5处理器。 Role ::: CEO is the supreme head of the company Time difference ::: 3477574 nano seconds 上面的设计似乎是正确的但是性能呢 您可能会说这没关系因为它以纳秒为单位。 当然您的应用程序是否很小并不重要但是对于大型企业应用程序而言这确实很重要。 如果您是优秀的程序员或开发人员则不能忽略性能问题尤其是在产品开发的情况下它们可能是市场上的同类产品。 为了解决上述问题让我们尝试另一种工厂设计方法即工厂类可能有所更改。 让我们看下面的代码。 package com.ddlab.rnd.patterns; /*** author Debadatta Mishra(PIKU)**/ public enum EmployeeType {CEO(CEO) {Overridepublic Roles getRoles() {return new CEORoles();}},CTO(CTO){Overridepublic Roles getRoles() {return new CTORoles();}},CFO(CFO){Overridepublic Roles getRoles() {return new CFORoles();}};private EmployeeType( String type ){this.type type;}private String type;public abstract Roles getRoles();public String getType() {return type;}Overridepublic String toString() {return TYPE CODE - type;} } 下面给出了测试线束类。 package com.ddlab.rnd.patterns; import java.util.HashMap; import java.util.Map; /*** author Debadatta Mishra(PIKU)**/ public class TestFactoryDesign {static MapString,EmployeeType typeMap new HashMapString,EmployeeType();static{typeMap.put(cto, EmployeeType.CTO);typeMap.put(ceo, EmployeeType.CEO);typeMap.put(cfo, EmployeeType.CFO);}public static void main(String[] args){String empType ceo;try {long startTime System.nanoTime();String whatIstheRole typeMap.get(empType).getRoles().getRole();System.out.println(Role of the Employee :::whatIstheRole);long endTime System.nanoTime();System.out.println(Time difference ::: (endTime-startTime) nano seconds);}catch (NullPointerException e) {System.out.println(No such Role is found);e.printStackTrace();}} } 如果运行上面的代码您将获得以下输出。 Role ::: CEO is the supreme head of the company Time difference ::: 1049108 nano seconds 那时间呢 让我们在传统方法和现代方法之间进行比较。 传统方法 3477574纳秒 现代方法使用枚举和映射 1049108纳秒 您能考虑一下时差吗它仅比传统方法快3倍。 那么哪个更好呢 当然使用枚举的现代方法更好。 除了枚举我还使用Map来维护雇员类型及其对应的枚举的列表。 在这种情况下就循环复杂性而言无需使用if子句可能会影响我们的性能。 使用以上1049108纳秒的方法总是更好。 您可以将ConcurrentMap用于多线程应用程序。 结论 希望您喜欢我关于工厂设计模式的文章。 如果有任何澄清您可以与我联系debadatta.mishragmail.com 。 参考 工厂设计模式 -Debadatta Mishra博客上JCG合作伙伴 Debadatta Mishra 的有效方法 。 翻译自: https://www.javacodegeeks.com/2013/06/factory-design-pattern-an-effective-approach.html设计模式 工厂方法
http://www.yutouwan.com/news/142332/

相关文章:

  • 禁止显示网站目录亚当学院网站视频建设教程
  • 上海装饰公司网站建设做棋牌网站多少钱
  • 门户网站开发视频教学外贸网站演示
  • 松江建设网站公司网站开发合同范本 doc
  • 织梦软件怎么使用域名做网站监控视频怎么做直播网站
  • 企业网站建设需要多少钱成都国家高新技术企业管理办法
  • 网站建设企业实践总结专业网站制作案例
  • 微网站开发建设wordpress缓存
  • 深圳网站建设公司哪家苏州企业网站制作服务
  • 无锡做网站优化多少钱在线设计logo图标
  • 电商网站开发数据库表帝国建站模板
  • 临沂网站优化哪家好服务器如何发布网站
  • 建站公司技术服务费iis7重启 网站
  • 建筑培训网站有哪些环保公司网站模板
  • 公司网站的建设哪家好wordpress 最新区块编辑
  • 河北住房和城乡建设厅网站首seo托管服务
  • 哪个网站可以做线上翻译赚钱银行网站建设方案
  • 北京高端网站建设飞沐wordpress 关闭保存修订版本
  • 淮安建设局网站大学软件开发需要学什么
  • 公司想为一个产品做多个网站本地建站discuz
  • 萤石云网站开发建设网站需要什么技术
  • 网站建设新闻+常识网站基础三要素
  • 汉川网站开发怎样开发一款软件
  • 明珠信息港网站建设专家wordpress中文下载方法
  • 平凉市建设局门户网站江门关键词优化效果
  • ping一下新浪网站怎么做网站的服务器每年都要续费的吗
  • 河北网站建设电话炫丽的网站
  • 网站开发项目描述万网网站后台管理系统
  • 杭州网站建设公司平台小白如何学电商运营
  • 互联网大厂有哪些池州网站优化公司