【简单工厂、工厂方法、抽象工厂、Builder模式的区别】
No1:
核心定义:
1)简单工厂模式:一个工厂方法创建不同类型的对象
2)工厂方法模式:一个具体的工厂类负责创建一个具体对象类型
3)抽象工厂模式:一个具体的工厂类负责创建一系列相关的对象
4)Builder模式:对象的构建与表示分离,它更注重对象的创建过程
No2:
工厂方法模式与简单工厂的区别主要有两点:
1)工厂方法需要定义抽象工厂类或者接口
2)具体的对象由具体的工厂类来创建,并且每个工厂只创建一类对象
No3:
抽象工厂和工厂方法的区别:
抽象工厂实际上就是工厂方法的升级版,它的一个工厂类能够生产多个不同类型的、相关联或者相互依赖的对象
No4:
抽象工厂与简单工厂的区别:
简单工厂通过一个静态函数创建不同类型的对象,而抽象工厂通过工厂子类的多个函数创建多个不同类型的对象
No5:
三个工厂模式和Builder模式的区别:
几个工厂模式侧重的是对象的创建,而Builder模式则是侧重对象的构建过程,通过Director与Builder的协作将对象的各个部分组装起来
【代理与装饰模式、桥接模式】
No6:
代理模式:为其他对象提供一种代理以控制对这个对象的访问
装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活
桥接模式:将抽象和实现解耦,使得两者可以独立地变化
No7:
装饰模式与代理模式的共同点都是增强功能,但是代理的特点是添加逻辑控制,而装饰则是动态地添加功能。
【外观模式与中介模式】
No8:
外观模式:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用
中介模式:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互
【策略与状态模式、命令模式】
No9:
策略模式:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换
状态模式:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类
命令模式:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能
No10:
命令模式在行为上与策略模式优点类似,策略模式关注的是算法替换的问题,用一个新的算法替换旧算法,或者提供多种算法由调用者选择,算法的自由更替是它实现的重点。而命令模式则关注的是解耦问题,如何让请求者和执行者解耦是它需要首先解决的,解耦的要求就是把请求的内容封装成一个一个的命令,由接收者执行,由于封装成了命令,就同时可以对命令进行多种处理,例如撤销、记录等。