重复的工作是让人最反感的,也是最打击生活的,特别是反复的写相同的代码,相同的功能,相类似的软件,你会发现自己沦落成为了一只程序鸭,每天都被这些死人的系统软件强*,当初学软件的的那一种幸福的心情顿时就没有了,说起以前,我觉得一辈子之中,肯定你会遇到几个让你改变一生的人的,那时已经是大一末了,班主任布置了一个编程项目,我抱着积极的心态去试了一下,没想到这就是我编程的开始,此时我很幸运的去到c#和数据库的选修课,我很认真的听讲,我记得那一段时间是一个月,那个月是亚运月,我要去地铁上班,那一个月我完全沉浸在编程的高潮之中,无论是搭地铁,还是上班,我在看书,我在组织功能逻辑,恨不得回到去就马上实现,那一个月是非常疯狂的一个月,是我大学里面最值得骄傲的一件事情,我除了编程,还是编程,我觉得自己就像一个艺术家在雕刻着自己的雕塑,一点一点,废寝忘食,最终作品得到了老师的高度赞扬,但是往后的一年时间我再也没有编程了,为什么呢,可能是“纵欲过度吧”,但是我觉得过多的原因是老师接项目的拖拉,一个项目可以弄一年都没有确定完全接下来,这是多么消磨一个人的意志啊,对于我的性格,我主张的就是快很准,想到了就去实践,拖拖拉拉的程序项目才是最烦人的,其中最受不了的是没有边际的功能,所谓的需求就是老师的一把嘴,今天想到了就要加进去,,明天不要了,又要删掉,我只能说,做这样的项目,我宁愿去做乞丐,我想说的是,程序员不是码农,他们的思维往往引领着潮流,一场革命(这个千百个故事证明了),然后发挥程序员独有的看法,还有积极性,我觉得是每一家it公司都需要认真对待和考虑的问题,好吧,回归正题,分解共同性:应用“一次且只能有一次” 原则产生最基本的模式,将变化的那部分代码放到方法里。这个想法最新提出的应该程序员,因为公司中的人(不是程序员)他们往往认为,程序基本都是可以复用的,如果要做另外一个软件,需要变得可能也就是界面的那一部分而已,为了满足这些想法,我们这里需要用到一些模式.
策略模式(Strategy):
运行时刻选择算法,其实策略模式和状态模式很像,仅看代码,你会发现根本就是相同的东西,这就是我刚才说的东西了,代码相同,模式的思想才是指导你的真正的手,策略模式更加强调的是通过上下文的不同,选择不同的策略应对,而状态模式强调的是切换不同的状态,来引导出不同的行为。示例代码我就不写了,因为就是你提供一个上下文,然后通过一个方法选择不同的策略(这策略往往代表的是不同的算法),还是举个例子吧,就是当你处于一个环境(项目没有完成,但是很赶),这时候你有两种策略来应对这个环境,1.不停的加班,不停的赶代码, 2,.给自己放假,去玩,然后回来看看设计模式,然后开始工作。这个就是两种策略,又或者是大学城南到岗顶,你可以做地铁+走路,或者你可以巴士+地铁+自行车+飞机+走路,这又是两种不同的策略。策略模式更加进一步的泛化,Policy模式,通常情况下,把Strategy 模式和Policy 模式区别开来是很有好处的,用Strategy 模式处理一个方法(变化)的情况,而用Policy 模式处理多个方法。
模板方法(Template method):
应用程序框架使你可以从一个或者一系列类继承下来,进而创建一个新的应用程 序,你可以重用既有类的大多数代码并且按照你自己的需要覆写其中的某些方法,从 而实现应用程序的定制。Template Method 是应用程序框架的一个基本概念,它通常隐 藏在(框架)背后,通过调用基类的一组方法(有些方法你可能已经覆写 (overridden)过了)来驱动应用程序。 这是书上的概念,不过我觉得写得够好了,模版方法一直是我想深入了解的东西,因为我想写框架什么的。而很多时候一下经典的例子使用最大的概念就是模版方法,而内部就使用其他各种模式实现这样。
Template Method 的一个重要特征是:它是在基类里定义的,而且不能够被(派生类)更改。有时候它是私有方法(private method),但实际上它经常被声明为final(的确是这样,不能修改,只能重写)。它通过调用其它的基类方法(覆写过的)来工作,但它经常是作为初始化过程的一部分被调用的,这样就没必要让客户端程序员能够直接调用它了。
示例
public class applicatonframework{
public applicatonframework(){
templateMethod();
}
//模版方法
final void templateMethod(){
customize1();
customize2();
}
abstact void customize1();
abstact void customize2();
}
//实现它
class myapp extends applicationframework{
void customize1() {
System.out.print("Hello ");
}
void customize2() {
System.out.println("World!");
}
}
//测试
myapp a=new myapp();
这样就是一个基本的调用了模版方法,而我现在接触得最多的就是回调了接口的模版方法,当你重写这个模版方法的时候必须实现其接口,而且是final,这往往就是事件驱动了。我在想,框架应该也是这样实现的,只不过是复杂一点而已,无论是弄android还是j2ee还是其他,不要重复发明轮子这个思想还是挺奏效的,要展现你的编程才华,我觉得衡量的标准是这个系统的扩展性质量等,这个系统使用的人力物力是否是最低的。个人看法而已,还是那一句话,程序能够很好的反映出你对这个世界的理解...
分享到:
相关推荐
一个把数组导出为表格的算法,输入一个数组,导出一个表格,当用户想改变导出的表格时,便可以通过改变输出的算法改变输出的结果。如果输出的内容用以网页显示,则输出 ... +----+----+-----+------+
2009-03-9 策略模式Strategy:当解决一个问题的途径(策略)有很多种的时候,每一种处理方式都可以做为一种处理策略,通过管理类来切换调用不同的策略。
设计模式-策略模式(Strategy)结合Android小知识讲解,简单明了
1.1.4 Quality approach..............................................................................................- 4 - 1.1.5 itSMF......................................................................
Section 1: Service-Oriented Architecture (SOA) Strategy 1 Introduction to Strategy..............3 Section 2: Service-Oriented Architecture (SOA) Methodology 2 Introduction to Program Management ...
-03-项目商业模式介绍.mp4 -04-项目功能模块介绍.mp4 -05-项目技术点介绍.mp4 -06-项目技术点-MybatisPlus介绍.mp4 -07-项目技术要点-MybatisPlus入门案例(一).mp4 -08-项目技术要点-MybatisPlus入门案例(二)....
+---.gitignore +---LICENSE +---README.md +---project.godot +---default_env.tres +---assets/ \---logo.png \---src/ +---main.tscn \---main.gd 时间线 2021年2月6日-移植到gdscript。 2020年12月24日-创建...
ch12-2-trading strategy-handout.pdfch12-2-trading strategy-handout.pdfch12-2-trading strategy-handout.pdf
mule基本节点解释汇总 <inbound....> <filtering-router> ... <default-service-exception-strategy> ..... </default-service-exception-strategy> ... </mule>
- 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式(Interpreter) - 迭代器...
光谱信息的特征选择,通过云永欢...and one hybrid method (variable importance in projection coupled with genetic algorithm, VIP–GA) were used to investigate the improvement of VCPA-based hybrid strategy.
在策略模式(Strategy Pattern)中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
设计模式--策略模式StrategyPattern
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法...
任何一个WEB都需要解决URL与请求处理器之间的映射,spring MVC也是一样,但Spring MVC就像Spring所作的一切一样(灵活,可以配置各种东西,但是也造成了很多复杂性),肯定不会只有一种方法来映射URL和 Controller之间...
微信小程序--使用策略模式进行表单验证strategy-master.zip
源代码清单(按照库排列) ...com.javapatterns.templatemethod 模板方法模式 com.javapatterns.uml 统一建模语言UML介绍 com.javapatterns.visitor 访问者模式 com.javapatterns.windowadapter 缺省适配模式 ...
Title: The Art of Application Performance Testing: From Strategy to Tools 2nd Edition Author: Ian Molyneaux Length: 278 pages Edition: 2 Language: English Publisher: O"Reilly Media Publication ...
spring 配置文件
67506276LCL-Constant-Power-Control-Strategy_strategy_gridcontrol_LCL_恒功率并网_并网_源码.zip