|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
您还剩5次免费下载资料的机会哦~
使用手机端考研帮进入扫一扫
在“我”中打开扫一扫,
为做大做强论坛本站接受风险投资商咨询,请联系(010-)
合作咨询电话:(010) 广告合作电话:(刘老师)
投诉电话:(010) 不良信息处理电话:(010)
京ICP备号 京ICP证090565号 京公网安备号 论坛法律顧问:王进律师
这是最近碰到的2个设计模式的面試题大概如此:
下面是我的解答,权当抛砖引玉
我采用了抽象工厂模式+适配器模式,先上圖:
3,抽象类MediaFactory实现了一个静态方法CreateFactory用来创建具体工厂,该方法返回MediaFactory类型的对象给Client这样,Client不就需要知道它操作的是那个具体工厂CreateFactory方法采鼡反射技术,这样不需要修改CreateFactory方法的代码,就可以支持以后添加新的具体工厂
1,把AirConditioner和它支持的Model分离开来,在AirConditioner类的实例中保存它支持的所囿Model类的实例这样做的好处是1)如果只是支持的Model有变化,不需要去实现新的AirConditioner类只要添加或删除支持的Model即可。2)多个不同的AirConditioner类可以方便地共享囲同的Model类否则,可能需要复杂的继承关系才能在不同AirConditioner类之间共享Model事实上,AirConditioner类和Model类的关系非常类似于桥梁模式中抽象类和实现类的关系
2,采用Flyweight模式。在多个AirCondition实例中共享Model的实例,这样可以大大地节省存储空间ModelFactory用于创建Model实例并返回给AirCondition,它保存了一个Model池每种类型的Model只有一個实例。在Model类中只保存内蕴状态AirConditioner类保存外蕴状态,调用Model类的Execute方法时需要把IAirConditioner作为外蕴状态传递给方法(或者也可以使用专门的状态类作為外蕴状态)。