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

各大电商购物网站转化率报表/优化网站内容

各大电商购物网站转化率报表,优化网站内容,合肥网站建设公司,安卓客户端开发一、策略模式的定义 策略模式定义了算法族,分别封装起来,让它们之间可以互换替换,此模式让算法的变化独立使用算法的客户。 二、使用策略模式的一个例子 2.1引出问题 某公司做了一套模拟鸭子的游戏:该游戏会出现各种鸭子&#xff…

一、策略模式的定义

策略模式定义了算法族,分别封装起来,让它们之间可以互换替换,此模式让算法的变化独立使用算法的客户。

二、使用策略模式的一个例子

2.1引出问题

某公司做了一套模拟鸭子的游戏:该游戏会出现各种鸭子,他们具有相似点(都会叫,会游泳,会表达自己的特征)和异同点(每种展示自己的特征是不同的方法),很容易想到使用OO技术,定义个鸭子超类,让其他的鸭子类来继承鸭子超类。

由于异同点都会展示自己的特征,只是展示特征方式不同,所以在超类中特征的方法是抽象或者使用一个接口(在此就使用接口,因为每一个类都会有展示方法)。下面给出其类图。

image

可当某一天发现了问题,

问题1:如果出现了一个DuckC,展示方式和DuckA相同,都是使用相同的方法,那么就会在DuckC类中写了同样的代码,如果那一天想修改他们中的使用相同的方法,就要一个个去修改,如果是有多个的话,就容易出现问题,而且不能到达方法复用的效果。

问题2:如果想让一只鸭子需要有两种不同的展示方式,可能随时改变展示方式,上面的设计就需要修改了

2.2分析问题

问题1为了达到复用,是不可能把所有的展示方式放到Duck类中,因为对应DuckA和DuckB以及DuckC可以随便调用方法,显然是不明智的。

先把问题1放一放,我们来看一下问题2的,可以随时改变,C#中有个属性的思想不就是可以随时改变变量的值。是不是可以使用相同的方法来实现呢。每次使用set时,是让值赋给指定的变量,而且可以达到复用的目的(如Person p=new Person();p.Age=22,22是一个int类型中的一个对象,可以多次使用,而且还可以赋值为23)。一句简单的属性赋值,隐含着多种设计原则。

原则一:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

在上面一段简单的代码中,我们可以把22,23看成计算机为我们封装好的类型。22和23是被独立出来的会变化的代码。具体的实现我们不需要知道怎么实现。只需要知道表示的一个数。

原则二:针对接口编程,而不是针对实现编程。

先简单的说一下上面的意思:让变的抽象成接口或者抽象类,然后通过单独的类来把接口实现或继承抽象类来实现,而不是将功能直接在代码中实现。

在上面具体的23和22怎么的实现我们是没有直接写出new int();而是直接获取的类型,其实现交给计算机去处理。

原则三:多使用组合,少使用继承

为什么能随时“改变age”,这就是组合的力量,如果是使用继承的话,就不能在一个过程中改变age。

上面使用整型可能有些不妥,仅仅作为一中理解形式。如果非要找一下策略模式在.net中的踪影,可以看一下ArrayList的Sort(IComparer comparer)方法,可以参考http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html

有了这三个原则,我觉得上面的两个问题应该可以解决了。

2.3解决问题

使用组合和属性的设计方法来处理

image

下面列出测试代码:

         Duck dA = new DuckA(); IDisplay displayA= dA.GetDisplay(); displayA.Display(); Console.WriteLine("A类鸭子展示方法:");Console.WriteLine("================================");Duck dB = new DuckB(); IDisplay displayB = dB.GetDisplay(); Console.WriteLine("B类鸭子展示方法:");displayB.Display(); Console.WriteLine("================================");Duck dC = new DuckC(); IDisplay displayC = dC.GetDisplay();Console.WriteLine("C类鸭子展示方法:");displayC.Display(); Console.WriteLine("================================"); dC.SetDisplay(new DisplayClassA()); Console.WriteLine("C类鸭子改变方法后展示方法:"); dC.GetDisplay().Display(); Console.Read(); 
View Code

 

输出结果:image

三、策略模式对应的UML

image

该模式也体现了面向对象的基本特征:封装(把算法一个个封装起来),继承(接口的实现也可以看成是实现类“继承”了接口),多态(在Context调用接口的时间,开始并不知道接口的方法的具体实现,但是知道有个方法,使用的时间就可获取,调用)。

源码  

四、小结

本文主要通过鸭子的设计,引出问题,分析问题,解决问题来体现了策略模式的灵活性,在分析过程中提出了三个设计原则,结合属性的实现思想来解决了问题。本文是属于读书笔记,可能在理解的地方有偏差,希望能够多多指教!

http://www.jmfq.cn/news/4894453.html

相关文章:

  • 服装企业营销网站建设/免费的十大免费货源网站
  • 物联网软件开发/汕头seo计费管理
  • 外贸英语怎么自学/惠州seo代理商
  • 做外贸比较好的网站/seo关键词优化技术
  • 网站备案的是空间还是域名/业务推广方式有哪些
  • 企业做网站要/百度seo排名点击器app
  • 网站模板文章资讯/海南快速seo排名优化
  • 电商网站建设思路/深圳seo公司助力网络营销飞跃
  • 网站测试方案/企业网站推广方案设计毕业设计
  • 苏州网站排名方案/模板建站的网站
  • 小企业做网站怎么做/手机怎么制作网页
  • 滨州网站建设公司电话/seo关键词排名优化销售
  • 找人做app网站吗/宁波谷歌seo
  • 泸州网站建设/网络推广服务外包公司
  • 手机端网站优化/百度网站排名
  • 网站设计第一步怎么做/做网站seo推广公司
  • 网站正在建设中 自拍/重庆百度小额贷款有限公司
  • 网站做端口是什么情况/如何制作百度网页
  • 广州有什么好玩的/浙江网站seo
  • 网上接单 网站建设/新品怎么刷关键词
  • 凤岗网站建设公司/青岛疫情最新情况
  • 西楚房产网宿迁房产网/站长工具之家seo查询
  • 建设网站要注意什么问题/注册网站平台
  • 做酒店网站的公司/互联网广告推广好做吗
  • 公司网站建设的好处/在线网站建设平台
  • 石家庄做网站建设的公司/百度客服在线咨询电话
  • 软件公司招聘/枣庄网站seo
  • 有教做鱼骨图的网站吗/高端网站设计
  • 中国建设传媒网官网/网站seo排名优化价格
  • 域名网站建设/站长推荐入口自动跳转