1.C++ 设计模式 - 策略模式
2.开放源代码软件使用优点
C++ 设计模式 - 策略模式
策略模式定义多种处理同一场景的不同算法,这些算法可在不影响用户的评分评分情况下互相替换。
应用场景
某会员制商场有两种级别会员:银卡会员、源码源码黄金会员,顾客顾客分别享有9折、评分评分8折购物优惠。源码源码热门源码1002热门源码同时不同的顾客顾客会员用户在生日当天购物,会赠送不同的评分评分生日礼物。
分析
场景比较简单,源码源码需要解决的顾客顾客问题是区分不同类型的顾客享有不同的权益(折扣和生日礼物)。
按照平常的评分评分编码习惯,通常会在需要区分用户等级的源码源码业务上加上if判断,实现不同等级顾客应享有的顾客顾客不同权益。这种方案能快速的评分评分解决实际问题,但是源码源码随着业务需要,商场又要引进更高逼格的会员类型,譬如白金会员、钻石会员等。此时,众成国际源码需要在散落在各处的业务代码上加上if补丁。
这种做法会引来如下问题:
解决方案
引入策略模式,将用户等级抽象,分别定义出用户所有的行为,不同等级的用户各自实现该等级应享有的权益。
策略模式
CShop: 商场类。实现不同等级顾客的折扣结算、生日礼物等。持有CConsumer指针,根据需要指向具体的顾客实例(CCommonUser、CSilverUser、CGoldUser)。
CConsume: 顾客抽象类。定义顾客所有的行为接口。
CCommonUser、CSilverUser、CGoldUser: 具体顾客类。不同等级顾客实现有差异部分的织码酱源码接口。
执行效果
客户端实现
总结源码
商店类接口
更新顾客类型
顾客类抽象接口
具体顾客类:黄金会员
客户端接口
推荐文章
C++ 设计模式 - 命令模式
开源文章目录
开放源代码软件使用优点
开放源代码软件使用优点 降低风险:拥有源代码使顾客们可以控制那些他们的业务所赖以生存的工具。当一个open-source产品的开发者提高价格,增加了难以接收的限制,或者使用了一些使顾客不满意的方法,另一个不同的组织将使用该源代码开始开发新的产品以解决原来机构的问题。顾客也能自己维护或找别人改进它以达到自己的要求。顾客控制软件,这在传统私有软件模式下是闻所未闻的事情。即使是一些财大气粗的顾客也可能缓解由于传统软件商自己内部的问题而导致严重的金融危机或公司被别的公司收购的风险。 质量:一些研究已经显示了open-source软件与别的可比商业软件具有可靠性上的极大优势。更加有效的开发模式,更多的独立同行对代码和设计的双重审查,以及大部分作者对自己作品的极大荣誉感,都对其优良的质量有所贡献。一些公司甚至给予发现Bug者以物质奖励。 透明度:私有软件有很多“阴暗的死角”,隐藏着许多Bug。源码对于查错和理解产品工作原理来说是剑侠杨门源码很重要的。在大的软件公司,只有极少数人能接触到源码,而这些能接触源码的人通常用户都无法直接接触。能接触源码对于修补安全漏洞来说,也是非常重要的。 正确的特性:一些开放源码的产品--包括上面列举的一些产品--是如此成功,以至于其商业竞争者无法存活。剪裁开放源码给用户极大自由,使他们能够按照自己的业务需求定制软件。大型组织能从即使很小的定制行为中削减大量开支和人力成本。用户的挑错和改进反过来对标准开放源码软件包也是个贡献。这在传统的私有软件开发中是不可能得到的。 有利的版权许可和价格:定义为开放源码使得软件在版权许可方面比私有软件具有更大的灵活性。这可以大大削减更多安装带来的花费和时间,对那些采购过程费时费力的机构更加有利。它也能给用户安装软件以更大的自由度。 什么时候不使用开放源码软件:错误的特性如果一个开放源码产品不能很好地满足一个组织的需求,而另外的防病毒源码一个私有软件却可以,并且得到一个满足特性的私有软件的成本比再开发修改一个开放源码产品的成本高的话,最好不使用开放源码软件。但参考上面的“剪裁”。支持:一些open-source软件传统的付费支持和电话支持。事实上,无论怎样,这都没有一个既没有源代码且无支持的产品严重。请看支持和open source软件一节。错误的平台大部分open-source软件主要是支持UNⅨ和Linux系统的,有时也支持Windows NT。另一些平台,例如大型机,对于移植开放源码软件是个巨大挑战。移植软件从UNⅨ到Windows NT上要付出很大代价。然而。开放源码的优点几乎可以使平台转换显得更划算。 缺乏技术人员:安装open-source软件有时需要一些更多的技术经验,例如,可以配置或编译源代码的能力。有源代码的优点在一些没有软件开发专家的公司被降低了。open-source的定制也要求有配置管理经验。无论如何,那些充分具有上述技术能力的任何组织都会很好地享受open-source的优点。 惰性:如果现存的所有系统都被很好的支持并完成,就没有必要去改变它们。然而,时常的去检讨这个决定是很重要,因为新技术经常会使它们变得过时。 避免open-source软件的原因:这些论据常被作为避免使用open-source软件的借口,但是通常经不起推敲。对未知的恐惧。正如你在上面的“open-source软件的例子”一节所看到的,许多的组织已经严重的依赖open-source软件,不管他们的决策者是否意识到这一点。这个问题由于open-source开发者宣传和使用市场的增加,以及更多的拥护者的出现变得比较容易解决。 在购买商业软件包上我们已经拥有巨大的投资。这仅仅是“必然花费谬误”的一种形式。软件许可证,好像为写字楼付的租金,是一些消费,但不是投资。如果别的产品能很好的以较低的成本实现你的组织的需要,那么过去把钱花费在低级的软件上对决策不应该产生影响。记住,你可能面临严重的政治上的反对,它来自于那些选择了赞成使用昂贵的,低级的产品,而不愿意承认他们的错误的守旧者。同时,考虑到它们可能被再次扩展,在训练职员和相关基础设施上的投资是完全合理的。 如果出了问题,我们需要有人负责。尽管理论上这听起来很合理,但如果我们一开始就使用可信赖的软件产品,远比在遭受经济损失之后才去控告软件供应商要好的多。几乎所有的主要软件公司都利用最终用户许可证的支持来解决一些由于他们软件的问题而带来的可能要负责的困扰。Microsoft和IBM公司有著庞大的,一流的法律职员,使得顾客的控诉不可能成功。在将来法律可能会越来越偏向软件供应商。open-source和软件技术支持商业支持和同几乎是那些正在使用open-source软件的公司最关心的问题了。付费支持是正当的问题,但是这对于open-source产品通常是可用的,而且一般都过高估计了它的重要性。 许多主要的open-source产品都有可用的技术支持合同。例如,Red Hat 和Caldera公司对他们销售的linux有电话支持。Cygnus,Collective Technologies和许多小的顾问公司靠支持和增强open-source软件,生意也做的不错。而且越来越多的open-source软件在保持其开放源码状态的同时,也获得了大量商业维护和支持。 电子邮件和Usenet新闻支持时非常有效的。几乎所有开发open-source软件的组织都提供免费的电子邮件支持,提供邮件列表和Usenet新闻组。这些机制比电话支持更加实际有效。在一个有许多软件供应商所支持的调查中,“Linux用户协会”在年获得“最好的技术支持奖”,同时也暴露了许多对传统的软件开发商的服务质量的大量不满意见。 对传统商业软件的支持经常是有限的并且是低质量的。例如Microsoft公司仅仅提供了为它的所有产品仅仅提供了一个技术支持电话号码:。许多市场商业销售支持人员把注意力集中在帮助初学者上手上,无法回答使用手册上没有包括的问题。许多软件公司认为传统的电话支持是很昂贵的代价,而因此消减它,这就导致了质量下降。扩展资料
开放源码软件《open-source》是一个新名词,它被定义为描述其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受许可证的限制。开放源码软件通常是有copyright的,它的许可证可能包含这样一些限制: 著意的保护它的开放源码状态,著者身份的公告,或者开发的控制。“开放源码”正在被公众利益软件组织注册为认证标记,这也是创立正式的开放源码定义的一种手段。