skip to content
Logo Logo ZhenXI Blog

1.12

成功并非终点,失败亦非灾难,唯有勇气才是永恒

逻辑论证

结构型设计模式

两个维护---坚决维护习近平总书记党中央的核心、全党的核心地位,坚决维护党中央权威和集中统一领导。

四个意识---政治意识、大局意识、核心意识、看齐意识。

四个自信---道路自信、理论自信、制度自信、文化自信。

四史---党史、新中国史、改革开放史、社会主义发展史。

四个伟大---伟大斗争、伟大工程、伟大事业、伟大梦想。

两个绝对---政治绝对可靠、对党绝对忠诚。

党的“三大作风”:理论联系实际、密切联系群众、批评与自我批评。

逻辑论证

一般质疑

无论据有结论的一般质疑

无论据有结论:此类问题较简单,题干常由“背景、分析和结论”,常用提出反向论据的方式反驳论点。

image-20250112161126734 image-20250112161715234

有论据有结论的一般质疑

在论据存在错误时,可通过指出论据问题质疑,论据有误,自然推不出题干结论。论据是个人观点、个人判断时,可能存在论据有误的错误。另,对比实验归因题目可看作是特殊的“质疑论据”。

image-20250112162541637 image-20250112163146656

软考

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 (主题接口中的方法)。

总结 (所有七种结构型模式):

模式关注点解决的问题识别特征
适配器接口转换接口不兼容存在被适配者、目标接口和适配器
装饰器动态添加功能避免类爆炸,增强功能存在组件、具体组件、装饰器和具体装饰器
桥接分离抽象和实现多维度变化存在抽象类、精化抽象类、实现接口和具体实现类
组合树形结构表示“部分-整体”层次结构,统一对待单个对象和组合对象存在组件、叶子节点和组合节点,组合节点可以包含子节点
外观简化接口为复杂子系统提供一个简单的接口存在外观类和子系统类
享元共享对象减少内存占用,提高性能存在享元工厂、享元接口、具体享元类和非共享具体享元类
代理控制访问控制对对象的访问,或者在访问对象时执行一些额外的操作存在抽象主题、真实主题和代理类,代理类控制对真实主题类的访问