迭代器和组合模式

什么是迭代器、组合模式

迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露内部的表示。
组合模式:允许你将组合对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合

模板方法

什么是模板方法模式

在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

适配器模式

什么是适配器模式

适配器模式将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无闻

对象适配器和类适配器

对象适配器和类适配器使用两种不同的适配方法(分别是组合与继承),类适配器是多继承的,所以不能在java中使用

命令模式

什么是命令模式

将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

命令模式特点

1.命令模式将发出请求的对象和执行请求的对象解耦
2.被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接受者的一个或一组动作
3.调用者通过调用命令对象的execute()发出请求,这会使得接受者的动作被调用
4.调用者可以接受命令当做参数,甚至在运行时动态地进行。
5.命令可以支持撤销,做法是实现一个undo()方法来回到execute()被执行前的状态
6.宏命令是一种简单的延伸,允许调用多个命令,宏方法也可以支持撤销
7.实际操作时,很常见使用“聪明”命令对象,也就是直接实现了请求,而不是将工作直接委托给接收者
8.命令也可以用来实现日志和事物系统

抽象工厂模式

什么是抽象工厂模式

提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类.

使用抽象工厂模式有什么好处,它和抽象工厂模式有什么区别?

1.所有的工厂都是用来封装对象的创建
2.简单工厂虽然不是真正的设计模式,但仍不失为一个简单的方法,可以将客户程序从具体类中解耦
3.工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象
4.抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中
5.所有的工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合
6.工厂方法允许类将实例化延迟到子类进行
7.抽象工厂创建相关的对象家族,而不需要依赖它们的具体类
8.依赖倒置原则指导我们避免依赖具体类型,而要尽量依赖抽象
9.工厂是很有威力的技巧,帮助我们针对抽象编程,而不需要针对具体类编程

工厂模式

什么是工厂模式

定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工行方法让类把实例化推迟到子类.工厂模式通常通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装

设计原则

依赖倒置原则:要依赖抽象,不要依赖具体类
通过以下三个设计思想可以帮我们达到遵循依赖倒置原则的目的
1)变量不可以持有具体类的引用
2)不要让类派生自具体类
3)不要覆盖基类中已实现的方法

其实严格意义上说我们应该尽量达到三个设计思想,而不是随时都要遵循这个原则。

设计模式之装饰者模式

什么是装饰者模式?

定义:装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

设计原则

1.开闭原则,即对修改关闭,对扩展开放
2.多用组合,少用继承