什么叫软模板法.docx
- 文档编号:13476399
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:11
- 大小:21.62KB
什么叫软模板法.docx
《什么叫软模板法.docx》由会员分享,可在线阅读,更多相关《什么叫软模板法.docx(11页珍藏版)》请在冰点文库上搜索。
什么叫软模板法
竭诚为您提供优质文档/双击可除
什么叫软模板法
篇一:
模板模式
/**
*模板模式
*定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤
*
*/
abstractclasstemplatebase
{
publicfunctionmethod1()
{
echo"abstractmethod1
";
}
publicfunctionmethod2()
{
echo"abstractmethod2
";
}
publicfunctionmethod3()
{
echo"abstractmethod3
";
}
publicfunctiondosomething()
{
$this->method1();
$this->method2();
$this->method3();
}
}
classtemplateobjectextendstemplatebase
{
}
classtemplateobject1extendstemplatebase
{
publicfunctionmethod3()
{
echo"templateobject1method3
";
}
}
classtemplateobject2extendstemplatebase
{
publicfunctionmethod2()
{
echo"templateobject2method2
";
}
}
//实例化
$objtemplate=newtemplateobject();
$objtemplate1=newtemplateobject1();
$objtemplate2=newtemplateobject2();
$objtemplate->dosomething();
$objtemplate1->dosomething();
$objtemplate2->dosomething();
abstractclass(抽象类):
定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。
该模板方法不仅调用前面的抽象方法,也可以调用其他的操作,只要能完成自身的使命。
concreteclass(具体类):
实现父类中的抽象方法以完成算法中与特定子类相关的步骤。
根据上面对定义的分析,以及例子的说明,可以看出模板方法适用于以下情况:
1.一次性实现一个算法的不变的部分,
并将可变的行为留给子类来实现。
2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
其实这可以说是一种好的编码习惯了。
3.控制子类扩展。
模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。
比如上面runbare()方法就只在runtest前面适用setup方法。
如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:
一是在api中不体现出你的模板方法;二、将你的模板方法置为final就可以了。
可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。
而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。
这样你在实现子类的时候,根本不需要对业务流程有太多的了解。
模板方法模式是类的行为模式。
准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。
这就是模板方法模式的用意。
模板方法模式的结构
模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。
模板方法模式需要开发抽象类和具体子类的设计师之间的协作。
一个设计师负责给出一
个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。
代表这些具体逻辑步骤的方法称做基本方法(primitivemethod);而将这些基本方法汇总起来的方法叫做模板方法(templatemethod),这个设计模式的名字就是从此而来。
模板方法所代表的行为称为顶级行为,其逻辑称为顶级逻辑。
模板方法模式的静态结构图如下所示:
这里涉及到两个角色:
抽象模板(abstracttemplate)角色有如下责任:
■定义了一个或多个抽象操作,以便让子类实现。
这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。
■定义并实现了一个模板方法。
这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。
顶级逻辑也有可能调用一些具体方法。
具体模板(concretetemplate)角色又如下责任:
■实现父类所定义的一个或多个抽象方法,它们是一个顶级逻辑的组成步骤。
■每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法(也就是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
源代码
抽象模板角色类,abstractmethod()、hookmethod()等基本方法是顶级逻辑的组成步骤,这个顶级逻辑由templatemethod()方法代表。
publicabstractclassabstracttemplate{//抽象模板角色类
/**
*模板方法
*/
publicvoidtemplatemethod(){
//调用基本方法
abstractmethod();
hookmethod();
concretemethod();
}
/**
*基本方法的声明(由子类实现)
*/
protectedabstractvoidabstractmethod();
/**
*基本方法(空方法)
*/
protectedvoidhookmethod(){}
/**
*基本方法(已经实现)
*/
privatefinalvoidconcretemethod(){
//业务相关的代码
}
}
具体模板角色类,实现了父类所声明的基本方法,abstractmethod()方法所代表的就是强制子类实现的剩余逻辑,而hookmethod()方法是可选择实现的逻辑,不是必须实现的。
publicclassconcretetemplateextendsabstracttemplate{//具体模板角色类
//基本方法的实现
@override
publicvoidabstractmethod(){
//业务相关的代码
}
//重写父类的方法
@override
publicvoidhookmethod(){
//业务相关的代码
}
}
模板模式的关键是:
子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑。
每当定义一个新的子类时,不要按照控制流程的思路去想,而应当按照“责任”的思路去想。
换言之,应当考虑哪些操作是必须置换掉的,哪些操作是可以置换掉的,以及哪些操作是不可以置换掉的。
使用模板模式可以使这些责任变得清晰。
模板方法模式中的方法
模板方法中的方法可以分为两大类:
模板方法和基本方法。
模板方法
一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
一个抽象类可以有任意多个模板方法,而不限于一个。
每一个模板方法都可以调用任意多个具体方法。
基本方法
基本方法又可以分为三种:
抽象方法(abstractmethod)、具体方法(concretemethod)和钩子方法(hookmethod)。
●抽象方法:
一个抽象方法由抽象类声明,由具体子类实现。
在java语言里抽象方法以abstract关键字标示。
●具体方法:
一个具体方法由抽象类声明并实现,而子类并不实现或置换。
●钩子方法:
一个钩子方法由抽象类声明并实现,而子类会加以扩展。
通常抽象类给出的实现是一个空实现,作为方法的默认实现。
在上面的例子中,abstracttemplate是一个抽象类,它带有三个方法。
其中abstractmethod()是一个抽象方法,它由抽象类声明为抽象方法,并由子类实现;hookmethod()是一个钩子方法,它由抽象类声明并提供默认实现,并且由子类置换掉。
concretemethod()是一个具体方法,它由抽象类声明并实现。
默认钩子方法
一个钩子方法常常由抽象类给出一个空实现作为此方法的默认实现。
这种空的钩子方法叫做“donothinghook”。
显然,这种默认钩子方法在缺省适配模式里面已经见过了,一个缺省适配模式讲的是一个类为一个接口提供一个默认的空实现,从而使得缺省适配类的子类不必像实现接口那样必须给出所有方法的实现,因为通常一个具体类并不需要所有的方法。
命名规则
命名规则是设计师之间赖以沟通的管道之一,使用恰当的命名规则可以帮助不同设计师之间的沟通。
钩子方法的名字应当以do开始,这是熟悉设计模式的java开发人员的标准做法。
在上面的例子中,钩子方法hookmethod()应当以do开头;在httpservlet类中,也遵从这一命名规则,如doget()、dopost()等方法。
使用场景
考虑一个计算存款利息的例子。
假设系统需要支持两种存款账号,即货币市场(moneymarket)账号和定期存款(certificateofdeposite)账号。
这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同的账号类型。
这个系统的总行为应当是计算出利息,这也就决定了作为一个模板方法模式的顶级逻辑应当是利息计算。
由于利息计算涉及到两个步骤:
一个基本方法给出账号种类,另一个基本方法给出利息百分比。
这两个基本方法构成具体逻辑,因为账号的类型不同,所以具体逻辑会有所不同。
显然,系统需要一个抽象角色给出顶级行为的实现,而将两个作为细节步骤的基本方法留给具体子类实现。
由于需要考虑的账号有两种:
一是货币市场账号,二是定期存款账号。
系统的类结构如下图所示。
篇二:
练习型软件模板
教育科学与技术学院
阿伏伽德罗定律练习软件设计方案
专业:
教育技术学班级:
11级网络二班姓名:
李盼盼学号:
110806131216指导老师:
张成功
阿伏伽德罗定律
一:
计划
1、确定项目范围:
表1.1具体项目范围列表
2、分析学习者特征
二:
设计
1、分析学习内容:
本软件主要为引导学生自主学习“阿伏伽德罗定律”,掌握阿伏伽德罗公式各种变行公示的使用,先通过一些简单的实验,让同学们了解到这些结果,然后引进阿伏伽德
罗定律,并且解释原因,最后做练习题,让同学们更加了解并熟练使用阿伏伽德罗定律。
软件的具体内容包括以下几个方面:
1、实验演示,阿伏伽德罗定律验证,例题解析。
2、习题难易渐进程度:
★简单★一般★困难3、习题类型包括:
填空题选择题简答题
2、软件内容的逻辑结构图:
图2.1结构图
3、确定课件结构:
4、创作流程图:
图2.2流程图
4、创作故事版:
图2.3课件封面的故事版
篇三:
告诉你什么叫渐进的软硬设计及验配
告诉你什么叫渐进的软硬设计!
以及怎样验配渐进多焦点
渐进多焦点镜片自1959年投入市场以来,经过近半个世纪的不断完善和改进,已形成软性和硬性两种设计潮流。
这两种设计的主要区别在于渐进通道的长短。
硬性设计的渐进片渐进通道短,周边像差相对较少,为保证各距离视觉,所需求的垂直尺寸较少,如青少年渐进片属于此种设计,但因其渐变通道短,故渐变过程太快,此种设计相对于老年人来说,比较难以适应;软性设计的渐进片渐变通道相对较长,周边像差相对大,但因其渐变通道长,渐变过程比较平缓,容易让戴镜者适应,而成为市场上渐进片销售的主流.
近年来,随着眼镜技术的不断发展,以及人们生活水平和质量的提高,渐进多焦点镜片越来越受广大青少年及中老年屈光不正顾客的欢迎。
然而由于验光技术的限制,人们的认识和普及率还很低,本文就渐进多焦点镜片的验配作以介绍。
渐进多焦点镜片的设计原理及特点
渐进多焦点镜片的设计原理是在一个镜片上产生连续的远中近视力。
特点图1是上方为远用屈光度,镜片的下方为近用屈光度,镜片中央是屈光度逐渐过度的区域渐变区。
大多数的渐进镜片近用区光学中心在远用区光学中心下10-16mm,鼻侧2-2.5mm。
在渐进区的两侧为像差区,当视线移向此区会视物变形,变形的程度与渐进片的设计及加光度有关。
选择合适的配戴者
在渐进镜片的选择适合配戴的顾客很重要:
①45岁以上有希望看远、中、近距离连续视力者②青少年学生控制和防治近视者③屈光度数在±6.00ds以内和±2.00dc以内者④刚进入老视,加光度比较低者以上是最佳配戴者。
但是如果:
①垂直屈光参差>±2.00d②散光>±2.00d③看远、中、近距离有大视场要求者④在戴双光镜及三焦镜,感觉良好者,以上的顾客需要
配戴就应该谨慎。
渐进多焦点镜片的验光
渐进多焦点的验光过程和普通镜片的验光其实没多大区别,也分为3个阶段,下面简单说下过程:
3.1远用屈光度的矫正
初始阶段①问诊②眼部一般检查③裸眼视力,旧镜屈光度及矫正视力的检查④电脑验光⑤检影。
精调阶段①双色试验②散光表及交叉圆柱镜检查。
终结阶段①主视眼的检查②双眼平衡及其它视功能检查。
3.2近用屈光度的检查
①交叉格子法:
在眼前放置±0.50dc的交叉柱镜负轴在900,正轴在1800如出现
或不加add,如出现
加入add直到水平的和垂直的线条一样清晰。
②经验法:
(年龄-30)×0.1=add
对于青少年add一般为+1.50ds。
镜架的选择和瞳距、瞳高的测量
4.1镜架的选择
对于镜架的选择,首先要求瞳孔的中心点到镜架的下边框内缘一般不低于22mm,对于标准通道18mm
或19mm的镜框高度应≥34mm,短通道的13.5或14mm的镜框高度应≥30mm,还有避免选择鼻侧大斜角的镜架,因为那样容易把阅读区“切掉”,还有尽量不要选择无框的镜架,因为容易松动,使各种参数发生改变。
此外务必选择有鼻托可以调整的镜架。
4.2瞳距的测量
对于瞳距我们要分别测量右左的单眼瞳距(因为很多人的鼻梁不一定位于双眼中心),瞳距要精确到0.5mm,测量的方法有:
瞳距仪、瞳距尺和用样片标记法标出再用渐进镜片测量卡测出,由于和普通眼镜一样测量就不介绍了。
4.3瞳高的测量
瞳高是指瞳孔中心点到镜框下框内缘的垂直距离。
下面就介绍两种方法:
4.3.1样片标记法
在测量之前必须对镜架进行调整、校对以获得最佳平衡,镜眼距一般为12-13mm,前倾角为100-120,镜腿长短合适。
①检查者和被检查者相对坐着,视线保持同一水平。
②检查者右手拿记号笔,闭右眼,睁左眼,左手拿笔式电筒放在左眼的下眼睑下面,令被检查者看检查者的左眼。
根据被检查者的瞳孔中心反光在眼镜的样片上用十字线标出瞳距,十字线的交叉点到镜框下内缘的垂直距离就是被检查者右眼瞳高。
③检查者右手拿记号笔,闭左眼,睁右眼,左手拿笔式电筒放在右眼的下眼睑下面,令被检查者看检查者的右眼。
根据被检查者的瞳孔中心反光在眼镜的样片上用十字线标出瞳距,十字线的交叉点到镜框下内缘的垂直距离就是被检查者左眼瞳高。
4.3.2公式法
h=(a-34)/2+22h=瞳高a=镜框垂直高度
修正值:
长通道h加1-2mm短通道h减1mm
a大于40mm加1-2mm
渐进多焦点镜片的加工和装配
5.1识别标记
①水平参考线:
临时标记,对应装成镜水平线,检测镜片散光轴位是否正确。
②隐形永久标记:
恢复临时标记用的,两点距离34mm。
③远用测量区:
检测镜片远用度数。
④近用测量区:
检测镜片近用光度和add。
⑤配镜十字标记:
对应配镜的瞳高。
一般在棱镜参考点上2mm。
⑥add标记:
镜片的下加光度。
⑦棱镜参考点:
为add的2/3。
5.2检测镜片
①镜片的眼别及其表面质量。
②镜片的远用度数和近用度数
③add标记
④检测水平参考线和永久隐形标记是否符合要求,不符合的从新根据隐形标记标出。
5.3加工和装配
5.3.1有自动扫描仪的磨边机
①直接把样片或镜框扫描到机器上。
②在机器上直接输入瞳距和瞳高,完成自动移心。
③把渐进片的配镜十字线对准屏幕上移好心的十字交叉点上,保持水平
④放入机器磨边,装配。
5.3.2需模板的磨边机
①根据样片制成模板
②根据模板上的刻度线测量出瞳高,并标出瞳高线。
③将模板固定在中心仪定位孔上。
④渐进片盖在模板上,配镜十字线和瞳高线重合并水平移心
⑤隐形标记必须在同一水平线上。
⑥放入机器磨边,装配。
渐进多焦点镜片的配戴及指导
①为顾客进行常规的整形及调整使十字线对准瞳孔中心。
②检查远近视力,如无误用酒精或丙酮擦去临时性标记。
③使用远用区时让顾客看远处目标,看清楚后慢慢抬起下巴眼球不要向下转让其体验到度数的变化,并解释是由于通过渐进区看到的。
④使用近用区时,让其头部不动眼球下转看近处的文字,并告诉顾客只能阅读不能浏览文章(一般3.5cm×5cm范围)
⑤远、中、近交替看时,让其靠眼球的转动看远、中、近距离,练习找到远用区、渐进区和近用区。
⑥让其靠眼球的左右转动看像变形区,让其注意像变形区的存在,并告诉顾客看左右物体时靠头的转动,而不能靠眼球的转动。
⑦让其走路,感觉渐进片的变形情况,并告诉顾客看近处时头要放低些。
尽量看眼前1米远。
⑧告诉顾客渐进片有1到2周的适应期,适应期要按“先静后动,先内后外”的步骤逐渐练习。
7.渐进多焦点镜片的不适原因及处理
对于过了适应期仍不能适应的顾客,我们首先要:
①根据隐形永久标记,用渐进片测量卡恢复临时性标记。
②检查镜片的远近屈光度和add并核对处方。
③检查装配质量。
④观察配戴者的效果,寻找问题所在。
对于不能适应的表现一般为:
阅读区太窄、远近视力模糊、头晕、有晃动感、视物变形、看物体时需要转动眼球或倾斜头位才能看到。
对于这些不适我们除了要问顾客的原屈光度、原配眼镜和用眼需求外。
我们主要要从所戴镜片屈光度、配镜参数和镜架情况考虑进行考虑分析。
见下表:
配戴不适的原因及其处理
不适表现可能原因
处理方法
视远模糊①配镜高度过大调整鼻托
②处方不正确:
正度数过多;负度数过少;散光不准确
重新验光
视近模糊①配镜高度过小②镜眼距离过大调整鼻托
③处方不正确:
近用加光度不正确;远用屈光度不正确
重新验光
④瞳距不准确重新订做
⑤垂直倾斜度不够调鼻托或镜腿
⑥镜片基弧问题调镜架弧度
看远时头晕眼花
①镜眼距离过大②不很符合脸形③垂直倾斜度不够④配镜高度太大
调鼻托或镜腿
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 什么 模板