Lab3 开发总结 各个设计模式
Posted fatdragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lab3 开发总结 各个设计模式相关的知识,希望对你有一定的参考价值。
在Lab3中,最多的就是各个设计模式的开发,下面讲一下各个机制的大致实现方法。
CRP模式:
CRP模式,通过接口组合实现局部共性特征的复用。我认为这个模式是最适合这个实验的。首先,需要我们开发的任务很难保证是完全共性的,也很难保证是完全个性的,往往都是只含有局部共性,这种情况下 CRP模式的优点会被放大。如果用继承树实现delegation机制的话,我认为至少在本实验是不妥的。局部共性多,比较杂糅,采用继承树实现会生成庞大的子类树,这会对开发工作带来一定干扰。但是继承树也有其好处,当局部共性并不那么明显,不易抽象的时候,继承树可能是更好的选择。
CRP下的接口组合:
在确定了该项在各个纬度上的属性过后,即可采用接口组合的方法,将各个维度的接口统一到一个接口中,然后将设计类实现该接口即可。实现时,对于局部共性操作,可以全部采用delegation机制,由此降低了开发成本
Strategy模式:
关于Strategy模式,在本次实验体现的不明显(也可能是我设计上并不太好),大致上来说,即A类,B类都实现了同一接口,然后提供一个Strategy类,该类可以选择某一类的方法实现展示给用户,例如PPT上的下图所示:
PaymentStrategy为一个接口,凡是实现了该接口的类都可以作为参数。通过类对方法实现的不同,所得到的结果也会不同,这一切都可以交给用户选择。由此实现了用户同一个操作,有多个“操作”方法。
State模式:
State模式与现在正在学习的自动机是非常类似的。首先有一个获得状态的方法,然后有一个move方法用于状态转移,这与自动机的开发是是非类似的,通过接受字符串的不同转移到不同状态。需要注意的是,这里我认为可以设置一些静态字符串,只有这些字符串可以用于接受...如下所示
在某些API的使用中,我们也可以看到这种设计方法。
Factory模式:
Factory在本次实验中的目的是对客户端隐藏直接new一个实例。但是Factory模式还有这其他应用,可以在建立实例时进行某些操作,本次实验未提及不在此展示。可以根据用户的输入的不同返回不同的实例,这样可以有效的将建立实例这一步骤放在一起解决。
对于这些设计模式,我个人认为,一定程度上是为了更好的复用。同时有的设计模式,例如Strategy,Factory模式一定程度上隐藏了将具体实现暴露给客户,这是一种安全,方便的做法。在以后的编程学习过程中,如果开发较多任务,首先要做的就是抽象出共性操作。全局共性抑或是局部共性,加以利用都可以降低开发工作量。
以上是关于Lab3 开发总结 各个设计模式的主要内容,如果未能解决你的问题,请参考以下文章