【设计模式】--重点知识点总结
题1
1、工厂和产品之间是依赖关系
2、工厂方法模式:工厂方法不能为静态方法。如果是静态方法,子类无法重写行为。
简单工厂可以用静态方法
3、采用设计模式,以保证成功的设计和体系结构
4、建造者模式:(1)用户只指定复杂对象的类型和内容即可(2)各个具体的建造者之间相互独立
5、桥接模式:抽象和实现相分离;动态组合多于一个的抽象化角色和实现化角色
6、可以以“_”开头,但不能有空格!
题2
- 命令模式:发出命令的责任和执行命令的责任不在同一类里
- 享元对象能做到共享的关键:区分内部状态和外部状态 P231
- 中介者:多对多;观察者:一对多
观察者:抽象目标指向(关联)抽象观察者 P23
- 毕业生通过职业介绍所找工厂:代理模式
题3
- 抽象工厂模式:提供一个创建一系列相关/相互依赖对象的接口,而无需指定他们具体的类
- 适配器模式:类适配器模式一次最多只能适配一个适配者类
3、外观模式:为子系统的一组接口提供统一的界面,例“电源总开关”
4、接口中含有 常量 和 公有抽象方法
5、面向对象编程三大特性:封装、继承、多态
6、建造者模式返回一个组装好的完整产品,抽象工厂模式返回一系列相关的产品
题5
- 备忘录模式支持撤销(一个依赖、一个关联,都指向备忘录),利用负责人的set和get;命令模式也支持撤销 P285
- 代理模式(协调调用者和被调用者)的几种类型:P253(VPN)。缺点:请求的处理速度会变慢
- 命令模式:将请求封装为对象,从而使你可以使用不同的请求对客户进行参数化
- 依赖倒转原则的定义 P34
- 接口隔离原则的定义 P39
- 客户端不应该依赖那些他不需要的接口
- 一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可
- 迭代器模式:访问一个聚合对象,而无需暴露其内部表示
- 实现视图--逻辑元素;环境视图--物理元素
- 职责链模式:可以动态决定由一组对象中的某个对象处理请求(请求沿着链传递,由某个对象来处理,这个对象是动态决定的。)
动态指定处理一个请求的对象集合(√),并地处理一个请求。高效率
(如果链条很长或处理者顺序不合理,可能导致性能下降;所以它不一定高效。)
题6
1、装饰模式:可以动态地给一个对象增加功能,这些功能也可以动态地撤销
2、组合模式:表示的是一种“部分-整体”的关系
3、享元模式(轻量级模式):要求能够共享的对象必须是细粒度对象,例“数据库连接池”
4、设计模式的分类:(1)范围:类模式和对象模式(2)目的:创建型模式、结构型模式和行为型模式
5、构造函数没有返回类型
题7
1、月光宝盒:备忘录模式
2、A:65;a:97
3、简单工厂模式:会增加系统中类的个数
4、命令模式支持“在不同的时间指定请求、将请求排队和执行请求”
5、访问者模式:不改变聚合类的前提下定义作用于聚合中元素的新操作
6、邮件的转发功能:原型模式!!!
题8
1、访问者模式:作用于某对象结构中的各元素的操作
2、外观模式又称为门面模式,它是一种对象结构型模式
3、设计模式包含模式名称、问题、解决方案、效果
4、高层模块依赖抽象
5、抽象工厂模式增加新产品族方便,但增加新等级结构需修改“工厂”类
6、桥接模式:继承->关联,降低耦合度
7、装饰模式支持动态撤销
8、享元模式:五子棋
题9
1、原型模式不满足“开闭原则”,需要为每一个类配备一个克隆方法
2、开闭原则的关键:抽象化
3、群聊(主题)消息推送给所有成员:观察者模式;
群聊:中介者模式
4、工厂子类可以隐藏父类的静态方法
5、当系统中有多余一个产品类时可以考虑使用抽象工厂模式
编程题:
1.switch (变量) 记得带括号!!!
2.List<User> users=new ArrayList<User> ();
HashMap h=new HashMap();