设计模式题目汇总.docx_第1页
设计模式题目汇总.docx_第2页
设计模式题目汇总.docx_第3页
设计模式题目汇总.docx_第4页
设计模式题目汇总.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 简述六大设计模式原则。答:设计模式六大原则(1):单一职责原则不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。设计模式六大原则(2):里氏替换原则所有引用基类的地方必须能透明地使用其子类的对象。设计模式六大原则(3):依赖倒置原则高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。设计模式六大原则(4):接口隔离原则客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。设计模式六大原则(5):迪米特法则一个对象应该对其他对象保持最少的了解。设计模式六大原则(6):开闭原则一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。2、抽象工厂和工厂方法的区别?P162Person类(合并的component和oncretecomponent)class Person public Person() private string name public Person(string name) = name; public virtual void show() Console.WriteLine(装扮的0,name); Garment类(Decorator)class Garment : Person protected Person componenet; /打扮 public void Decorate(Person component) ponent = component; public override void Show() if(component != null) component.Show() 具体服饰类(ConcreteDecorator)class TShirts : Garment public override void show() Console.Writer(大T恤); base.Show() 其余类类似.3、只根据抽象类中定义的接口来操纵对象有什么好处?答:1)客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口。2)客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。4、适配器模式和装饰者模式的区别?装饰者模式 为了引入新的行为或责任。可以让新的行为加入类中,无需修改现有代码。适配器模式 为了得到客户的期望。可以让客户使用新的库的借口,而无需改变任何代码。5、好莱坞原则别调用我们,我们会调用你。6、 适配器模式、装饰者模式和外观模式的区别适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。7、观察者模式提供了一种对象设计可以让主题与观察者之间松耦合的原因:(1) 主题只知道观察者实现了某个接口,不需要知道观察者的具体类是谁,做了些什么或其他任何细节。(2) 任何时候我们都可以增加新的观察者。(3) 有新的类型的观察者出现时,主题的代码不需要修改。(4) 我们可以独立地复用主题或观察者。(5) 改变主题或观察者其中一方并不会影响另一方。8、 装饰者模式、适配器模式以及外观模式的区别:装饰者:目的是为了引入新的行为或责任,无需修改现有的代码适配器:目的是为了得到客户所期望的接口,让客户使用新的库,无需改变任何代码。外观:目的简化接口,将一个或数个类的复杂的一切都隐藏在背后。9、好莱坞原则和依赖倒置原则之间的关系如何?依赖倒置原则教我们尽量避免使用具体类,而多使用抽象。而好莱坞原则是用在创建框架或组件上的一种技巧,好让低层组件能够被挂钩进计算中,而且又不会让高层组件依赖低层组件。两者的目标都是在于解耦,但是依赖倒置原则更加注重如何在设计中避免依赖。好莱坞原则教我们一个技巧,创建一个有弹性的设计,允许低层结构能够互相操作,而又防止其他类太过依赖它们。10、 请简述工厂方法模式?工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。11、针对接口编程的含义:针对接口编程, 关键在于多态,利用多态, 程序可以针对超类型编程, 执行时会根据实际情况执行到到真正的行为, 不会被绑死在超类型的行为里面。可以说, 变量的声明类型应该是超类型。(课本,p12)12、 画出装饰者模式的类图(课本, p91) 参看课本第91页即可。13、低层组件不可以调用高层组件中的方法吗?答:并不尽然。事实上,底层组件在结束时,常常会调用从超类中继承来的方法。我们所要做的是,避免让高层和低层组件之间有明显的环状依赖。请简要叙述策略模式?答:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。14、一个适配器只能封装一个类吗适配器模式的工作是将一个接口转换成另一个,遇到特殊情况可以让一个适配器包装多个被适配者。15、 外观模式中每个子系统只能有一个外观么不,可以为一个子系统创建许多个外观16、 工厂方法和创建者是否总为抽象的不,可以定义一个默认的工厂方法来产生某些具体的产品,这么一来即使创建者没有任何子类依然可以创建产品。17、 模板方法中使用钩子的真正目的是什么钩子可以让子类实现算法中可选的部分,或者在钩子于子类的实现并不重要的时候,子类可以对钩子置之不理。钩子的另一个用法是让子类能够有机会对模板方法中某些即将发生的步骤做出反应。钩子也可以让子类有能力为其抽象类做一些决定。18、装饰模式和适配器模式比较相似:都有包装作用,都是通过委托方法实现其功能。不同:装饰模式包装的事自己的兄弟类,继承同一个接口或类,适配器模式则修饰没有关系的类。19、工厂模式中这些所谓的“工厂”究竟能带来什么好处?答:有许多好处。将创建对象的代码集中在一个对象或方法中,可以避免代码中的重复,并且更方便以后的维护。这也意味着客户在实例化对象时,只会依赖于接口,而不是具体类。这让代码更具有弹性,可以应对未来的扩展。20、用JAVA实现单件模式public class Singletonprivate static Singleton uniqueInstance = new Singleton();private Singleton()public static Singleton getInstance()return uniqueInstance;21、问题:一个宿舍里有A、B、C、D四个学生,A、C选了课程甲,B选了课程乙,D选了课程丁,在打铃的时候四个学生会接收到铃声去上课,请用一个模式描述这个这个过程,并画出类图。答:观察者模式22、名词解释1、设计模式:是一套被反复使用多数人知晓的经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被人理解,保证了代码的可靠性简答题1、设计模式中一般都遵循的原则是什么答:开-闭原则 根据场景进行设计原则 优先组合原则,包容变化原则选择题1、设计模式一般都用来解决什么样的问题(A)A、同一问题的不同表相 B、不同问题的同一表相C、不同问题的不同表相 D、以上都不对2、要依赖于抽象,不要依赖于具体,即针对接口编程,不要针对实现编程是(D)的表述 A、开闭原则 B、接口隔离原则C、里氏代换原则 D、依赖倒置原则23、举例说明体现软件复用的设计模式:参考答案:装饰者模式(装饰者模式动态的将责任附加到对象上,若要扩展功能,可以在原有代码基础上比继承更有弹性的扩展 )、适配器模式(使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作,复用了现存的类,解决了现存类和复用环境要求不一致的问题。 )24、创建一个模板方法时,怎么才能知道什么时候该使用抽象方法,什么时候使用钩子?答:当你的子类必须提供算法中的某个方法或步骤的实现时,就是用抽象方法。如果算法的这个部分是可选的,就用钩子。如果是钩子的话,子类可以选择实现这个钩子。25、1GOF 设计模式常用的有几种?GOF 设计模式按照模式的目的可 分为哪三类? 答: 行为型,结构型,创建型 2.针对接口编程,不针对实现编程的意义。 答: 主题与观察者都是用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。 3.面向对象(OO)的原则有: 答: 1. 封装变化 2. 多用组合,少用继承 3. 针对接口编程,不针对实现编程 4. 为交互对象之间的松耦合设计而努力 5. 对扩展开放,对修改关闭 6. 依赖抽象,不要依赖具体类 7. 只和朋友交谈 8. 别找我,我会找你 9. 类应该只有一个改变的理由 4. 耦合分为几种? (1) 内容耦合 (2) 公共耦合 (3) 外部耦合 (4) 控制耦合 (5) 标记耦合 (6) 数据耦合 (7) 非直接耦合26、观察者模式的“推”和“拉”有什么不同?各自有什么优缺点?答:“推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。“拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。“推”的好处包括:1、高效。2、实时。3、可以由Subject确立通知的时间,可以避开一些繁忙时间。4、可以表达出不同事件发生的先后顺序。缺点:精确性差,不能保证把信息送到客户端。“拉”的好处包括:1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系解脱到Observer去完成。2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。3、Observer可以自行决定获取更新事件的时间。4、拉的形式可以让Subject更好地控制各个Observer每次查询更新的访问权限。缺点:不能及时获取系统更新。27、请简述几种你知道设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论