1.12
成功并非终点,失败亦非灾难,唯有勇气才是永恒
两个维护---坚决维护习近平总书记党中央的核心、全党的核心地位,坚决维护党中央权威和集中统一领导。
四个意识---政治意识、大局意识、核心意识、看齐意识。
四个自信---道路自信、理论自信、制度自信、文化自信。
四史---党史、新中国史、改革开放史、社会主义发展史。
四个伟大---伟大斗争、伟大工程、伟大事业、伟大梦想。
两个绝对---政治绝对可靠、对党绝对忠诚。
党的“三大作风”:理论联系实际、密切联系群众、批评与自我批评。
逻辑论证
一般质疑
无论据有结论的一般质疑
无论据有结论:此类问题较简单,题干常由“背景、分析和结论”,常用提出反向论据的方式反驳论点。
有论据有结论的一般质疑
在论据存在错误时,可通过指出论据问题质疑,论据有误,自然推不出题干结论。论据是个人观点、个人判断时,可能存在论据有误的错误。另,对比实验归因题目可看作是特殊的“质疑论据”。
软考
1 结构型模式设计模式 七种
1. 适配器模式 (Adapter)
-
特点:
- 将一个类的接口转换成客户希望的另外一个接口。
- 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 主要解决接口不兼容的问题。
- 有两种实现方式:
- 类适配器: 使用继承,适配器类继承目标接口并实现它,同时继承被适配的类。
- 对象适配器: 使用组合,适配器类实现目标接口,并持有一个被适配类的实例。
-
识别:
- 关注点: 接口转换。
- 场景: 当你需要使用一个已有的类,但其接口不符合你的需求时。例如,你想使用一个第三方库,但它的接口与你的代码不兼容。
- 结构: 存在一个
Adaptee(被适配者) 类,一个Target(目标) 接口,和一个Adapter(适配器) 类,Adapter类实现了Target接口,并内部使用或继承了Adaptee类。 - 关键词:
Adaptee,Target,Adapter,Request(目标接口中的方法),SpecificRequest(被适配者中的方法)。
2. 装饰器模式 (Decorator)
-
特点:
- 动态地给一个对象添加一些额外的职责。
- 就增加功能来说,装饰器模式相比生成子类更为灵活。
- 保持原有接口不变,只是增强功能。
- 可以对一个对象进行多次装饰。
-
识别:
- 关注点: 动态地添加功能。
- 场景: 当你需要给一个对象添加功能,但不想通过继承来创建很多子类时。例如,你想给一个咖啡对象添加牛奶、糖等配料。
- 结构: 存在一个
Component(组件) 接口,一个ConcreteComponent(具体组件) 类实现了Component接口,一个Decorator(装饰器) 抽象类也实现了Component接口并持有一个Component对象的引用,以及多个ConcreteDecorator(具体装饰器) 类继承自Decorator类,并在其方法中调用被装饰对象的方法并添加额外的功能。 - 关键词:
Component,ConcreteComponent,Decorator,ConcreteDecorator,Operation(组件接口中的方法)。
3. 桥接模式 (Bridge)
-
特点:
- 将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 使用组合关系代替继承关系来实现,降低了抽象和实现这两个可变维度的耦合度。
- 主要解决多维度变化的问题。
-
识别:
- 关注点: 分离抽象和实现。
- 场景: 当一个类存在两个或多个独立变化的维度,并且你希望将这些维度分离,使它们可以独立变化时。例如,一个图形类可以有不同的形状(圆形、矩形)和不同的颜色(红色、蓝色)。
- 结构: 存在一个
Abstraction(抽象) 类,它持有一个Implementor(实现) 接口的引用,以及多个RefinedAbstraction(精化抽象) 类继承自Abstraction类;还存在一个Implementor接口,以及多个ConcreteImplementor(具体实现) 类实现了Implementor接口。 - 关键词:
Abstraction,RefinedAbstraction,Implementor,ConcreteImplementor,Operation(抽象类中的方法),OperationImpl(实现接口中的方法)。
4. 组合模式 (Composite)
-
特点:
- 将对象组合成树形结构以表示“部分-整体”的层次结构。
- 组合模式使得用户对单个对象和组合对象的使用具有一致性。
- 主要解决树形结构的问题。
-
识别:
- 关注点: 树形结构,统一对待单个对象和组合对象。
- 场景: 当你需要表示对象的“部分-整体”层次结构,并且希望以统一的方式处理单个对象和组合对象时。例如,文件系统中的文件和文件夹,公司组织结构中的部门和员工。
- 结构: 存在一个
Component(组件) 接口,它定义了叶子节点和组合节点的公共操作;Leaf(叶子) 类实现了Component接口,表示叶子节点;Composite(组合) 类也实现了Component接口,并持有一个Component对象的列表,表示组合节点,它可以包含叶子节点和其他组合节点。 - 关键词:
Component,Leaf,Composite,Add,Remove,GetChild,Operation(组件接口中的方法)。
5. 外观模式 (Facade)
-
特点:
- 为子系统中的一组接口提供一个统一的高层接口。
- 使得子系统更容易使用。
- 简化客户端与复杂子系统之间的交互。
- 降低了系统的耦合度。
-
识别:
- 关注点: 简化接口。
- 场景: 当你需要为一个复杂的子系统提供一个简单的接口时,或者当客户端与多个子系统之间存在复杂的依赖关系时。例如,一个家庭影院系统可能包括电视、音响、DVD播放器等多个子系统,外观模式可以提供一个简单的接口来控制整个影院系统。
- 结构: 存在一个
Facade(外观) 类,它持有一个或多个SubSystem(子系统) 类的引用,并对外提供一个简化的接口,将客户端的请求委派给子系统处理。 - 关键词:
Facade,SubSystem,Operation(外观类中的方法)。
6. 享元模式 (Flyweight)
-
特点:
- 运用共享技术来有效地支持大量细粒度对象的复用。
- 通过共享技术来避免大量拥有相同内容的对象的开销,降低内存占用,提高性能。
- 将对象的状态分为内部状态(intrinsic)和外部状态(extrinsic)。内部状态是对象可以共享的,存储在享元对象内部;外部状态是对象不可共享的,由客户端传入。
-
识别:
- 关注点: 共享对象,减少内存占用。
- 场景: 当一个应用程序使用了大量的对象,而这些对象有很多是相同的或者相似的,并且这些对象的内部状态可以共享时。例如,文本编辑器中的字符对象,如果每个字符都创建一个对象,会占用大量的内存,可以使用享元模式来共享字符对象。
- 结构: 存在一个
FlyweightFactory(享元工厂) 类,它负责创建和管理Flyweight(享元) 对象;一个Flyweight接口,以及多个ConcreteFlyweight(具体享元) 类实现了Flyweight接口,表示可以共享的对象;一个UnsharedConcreteFlyweight(非共享具体享元) 类,表示不可共享的对象;客户端通过FlyweightFactory来获取Flyweight对象,并传入外部状态。 - 关键词:
Flyweight,ConcreteFlyweight,UnsharedConcreteFlyweight,FlyweightFactory,IntrinsicState,ExtrinsicState,Operation(享元接口中的方法)。
7. 代理模式 (Proxy)
-
特点:
- 为其他对象提供一种代理以控制对这个对象的访问。
- 可以在不改变原始对象(被代理对象)的情况下,通过代理对象控制对原始对象的访问,并添加一些额外的操作。
- 常见的代理类型:
- 远程代理: 为不同地址空间的对象提供本地代表。
- 虚拟代理: 根据需要创建开销很大的对象,例如延迟加载。
- 保护代理: 控制对原始对象的访问权限。
-
识别:
- 关注点: 控制访问。
- 场景: 当你需要控制对一个对象的访问,或者需要在访问一个对象时执行一些额外的操作时。例如,图片的延迟加载,权限控制,日志记录等。
- 结构: 存在一个
Subject(抽象主题) 接口,它定义了RealSubject(真实主题) 和Proxy(代理) 的共同接口;一个RealSubject类,它是真正执行业务逻辑的对象;一个Proxy类,它实现了Subject接口,并持有一个RealSubject对象的引用,客户端通过Proxy对象来访问RealSubject对象。 - 关键词:
Subject,RealSubject,Proxy,Request(主题接口中的方法)。
总结 (所有七种结构型模式):
| 模式 | 关注点 | 解决的问题 | 识别特征 |
|---|---|---|---|
| 适配器 | 接口转换 | 接口不兼容 | 存在被适配者、目标接口和适配器 |
| 装饰器 | 动态添加功能 | 避免类爆炸,增强功能 | 存在组件、具体组件、装饰器和具体装饰器 |
| 桥接 | 分离抽象和实现 | 多维度变化 | 存在抽象类、精化抽象类、实现接口和具体实现类 |
| 组合 | 树形结构 | 表示“部分-整体”层次结构,统一对待单个对象和组合对象 | 存在组件、叶子节点和组合节点,组合节点可以包含子节点 |
| 外观 | 简化接口 | 为复杂子系统提供一个简单的接口 | 存在外观类和子系统类 |
| 享元 | 共享对象 | 减少内存占用,提高性能 | 存在享元工厂、享元接口、具体享元类和非共享具体享元类 |
| 代理 | 控制访问 | 控制对对象的访问,或者在访问对象时执行一些额外的操作 | 存在抽象主题、真实主题和代理类,代理类控制对真实主题类的访问 |