微信

使用微信服务,更方便

职友集>程序员面试题 > DisigenPattern设计模式

DisigenPattern设计模式

2015-06-29 06:30:01 阅读( 88 )

1671人 收藏本页

标签:程序员面试题

面向对象设计原则:
开闭原则:Software entities should be open for extension, but closed for modification.模块应对扩展开放,而对修改关闭。例如模板Template
里氏代换原则:任何基类可以出现的地方,子类一定可以出现。其实就是父类有个public方法,子类不能改成private或者protected,降低访问修饰符的范围。
合成复用原则:少用继承,多用复用。
依赖倒转原则:抽象不应该依赖于细节,细节应当依赖于抽象。要针对接口编程,而不是针对实现编程。方法参数最还是接口或者抽象类便于扩展。
接口隔离原则:接口做且只做该做的事。
迪米特法则:最少知识原则Least Knowledge Principle,talk only to your immediate friends不要和陌生人说话。其实就是尽量封闭类,能用private不用public,尽量采用final。
创建型Creational:
Factory Method工厂方法:在工厂方法里面new,例如java有很多类提供了getInstance方法
Abstract Factory抽象工厂:与工厂方法的区别:返回的不是具体类引用,而是接口或者抽象类引用,此工厂方法可以被继承实现成具体对象的多个工厂方法
Prototype原型:在java中就是Object的clone()方法
Builder建造者:其实就是复杂对象的创建方法,分模块创建是为builder
Singleton单例:private构造方法,程序中只能出现一个对象
结构型Structual
Facade门面:其实就是为多个类似的服务抽象出相同的接口供调用,是提供服务的工厂
Proxy代理:简单来说就是借刀杀人
Adapter适配器:与代理有些类似,代理是代理与被代理两个都实现同一接口,而适配则没有共同接口,完全是调用一个不相干的类的方法实现
Composite组合:树形结构
Decorator装饰者:Java的流实现,一层层包裹
Bridge桥接:排列组合
Flyweight轻量级:为了节省空间用的,例如xml中相同的节点,oracle中压缩表,同一字段中相同的值被压缩成链接
行为型Behavior
Template Method模板方法:servlet的设计,init,service,destroy,这些是被webcontainer调用的,在webcontainer的整个流程中还有其他一些相同的处理流程
Memento纪念品(备忘录):就是记住对象的初始状态,方便恢复
Observer观察者:在Java中有接口java.util.Observer(update)和类java.util.Observable(addObserver,notifyObservers)
Chain of Responsibility责任链:击鼓传花,迭代也是责任链,不过责任链上都是自己,最终到终止条件再依次返回调用
Command命令:就是将请求包装成对象传做参数,名称很形象,就是下圣旨,要做的事情都在圣旨里面写了。圣旨就是命令的对象,作为参数传给执行人。自裁吧,爱卿。
State状态:变形金刚,汽车模式与战士模式,两种模式行动是不一样的,汽车是轮子跑,战士模式就蹦达了
Strategy策略:其实就是在接口里面定义方法,各个实现类各自提供一套实现
Mediator调停者(中介者):房产中介,不多说。
Interpreter解释器:编译器,解释语言或者命令,例如xml解析
Visitor访问者:就是把有些业务逻辑不属于具体类,把它提取到访问者类里面去,这样调用访问者类的方法即可对其他的类进行操作,类似于代理
Iterater迭代器:Iterator接口
设计模式需要在适当的时候用,不过最好是弄清楚,毕竟现在面试都喜欢问这个。

来自IT公司面试手册

下一篇:名企开放性面试题集

上一篇:OOP语言技术比较:Java,C++,Object Pascal

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题