软件测试面试题——设计模式

● 请你说一下常用设计模式;

参考回答:
(1)单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点,避免一个全局使用的类频繁的创建和销毁,节省系统资源,提高程序效率。
实现方式:

将被实现的类的构造方法设计成private的。

添加此类引用的静态成员变量,并为其实例化。

在被实现的类中提供公共的Create Instance函数,返回实例化的此类,就是2中的静态成员变量。

单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,适用场景:

需要频繁实例化然后销毁的对象。

创建对象时耗时过多或者耗资源过多,但又经常用到的对象。

有状态的工具类对象。

频繁访问数据库或文件的对象。

场景举例:

每台计算机有若干个打印机,但只能有一个PrinterSpooler,以避免两个打印作业同时输出到打印机;

Windows的TaskManager(任务管理器),不能打开两个windows task manager;

Windows的Recycle Bin(回收站),在整个系统运行过程中,回收站一直维护着仅有的一个实例;

网站的计数器,一般也是采用单例模式实现,否则难以同步;

(2)策略模式:策略模式是把一个类中经常改变或者将来可能改变的部分提取出来作为一个接口,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。

实现方式:

提供公共接口或抽象类,定义需要使用的策略方法。(策略抽象类)

多个实现的策略抽象类的实现类。(策略实现类)

环境类,对多个实现类的封装,提供接口类型的成员量,可以在客户端中切换。

客户端调用环境类进行不同策略的切换。

类图:
在这里插入图片描述

Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略,实现定义的策略。

ConcreteStrategy:具体的策略实现,也就是具体的算法实现。

Context:上下文,负责与具体的策略交互,通常上下文会持有一个真正的策略实现。

适用场景:

如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值