TYUT设计模式大题

对比简单工厂,工厂方法,抽象工厂模式

比较安全组合模式和透明组合模式

安全组合模式容器节点有管理子部件的方法,而叶子节点没有,防止在用户在叶子节点上调用不适当的方法,保证了的安全性,防止叶子节点暴露方法,缺点有可能在区分叶子对象和容器对象会需要进一步判断。

透明组合模式容器节点和叶子节点都有一致的方法,客户端可以一致的去对待和处理,叶对象可能会实现一些对它本身无意义的方法。

比较状态模式和策略模式

目的:状态模式主要用于对象的行为依赖于他的状态

策略模式用于一系列封装好的算法或者策略,互相替换

触发条件:

状态模式是由对象的内部的状态模式改变触发的

策略模式是由客户端代码主动的去选择不同的策略来触发的

使用场景:

状态模式可以对应多个状态

策略模式无论使用什么策略最后的目的都是相同的,具有一致性。

什么是设计模式,设计模式的基本要素

定义:设计模式是一套被反复使用被多数人知晓的经过分类编目的,代码设计经验的总结。

基本要素:模式名称,问题,目的,解决方案,效果实例代码,和相关设计模式。

三种类型模式

创建型注重对象的创建过程

结构型更加关注类与对象的组织

行为型更加关注对象之间的交互

单例模式的优缺点

单例模式在内存中只有一个实例,减少了内存的开支,特别是一个对象需要频繁的创建和销毁时,单例模式的优点就特别明显。

单例模式可以避免对资源的多重占用

单例模式设置了全局唯一的全局访问点优化共享资源访问。

缺点:

扩展困难

单列类的职责过重

由于自动垃圾回收机制,可能会导致共享的单例对象状态丢失

继承

优点:

代码共享、减少创建类的工作量,每个子类拥有父类的方法和属性;

提高代码复用;

子类可以形似父类,但又异于父类;

提高代码可扩展性,很多开源框架的扩展接口都是通过继承父类完成;

提高产品或者项目的开放性

继承缺点(鸡蛋挑骨头):

继承是侵入式的;

降低代码的灵活性。子类必须拥有父类的属性和方法,让子类多了些约束。

增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改。

透明装饰模式和半透明装饰模式

要求客户端完全针对抽象编程,装饰模式的透明性要求客户端程序不应该将对象声明为具体构件类型或具体装饰类型,而应该全部声明为抽象构件类型

对于客户端而言,具体构件对象和具体装饰对象没有任何区别

可以让客户端透明地使用装饰之前的对象和装饰之后的对象,无须关心它们的区别。可以对一个已装饰过的对象进行多次装饰,得到更为复杂、功能更为强大的对象

半透明(Semi-transparent)装饰模式:用具体装饰类型来定义装饰之后的对象,而具体构件使用抽象构件类型来定义

对于客户端而言,具体构件类型无须关心,是透明的;但是具体装饰类型必须指定,这是不透明的

可以给系统带来更多的灵活性,设计相对简单,使用起来也非常方便

客户端使用具体装饰类型来定义装饰后的对象,因此可以单独调用函数

最大的缺点在于不能实现对同一个对象的多次装饰,而且客户端需要有区别地对待装饰之前的对象和装饰之后的对象

代理的几种模式

保护代理(Protect Proxy):控制对一个对象的访问,可以给不同的用户提供不同级别的使用权限

虚拟代理(Virtual Proxy):如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建

2024年考的是

七大原则,5个结构型设计模式,产品等级结构和产品族的区别,工厂方法的定义

相关推荐
AI人工智能+电脑小能手13 小时前
大白话说Java设计模式-23-桥接模式(源码剖析篇)
java·设计模式·jdbc·桥接模式·源码分析·awt·java logging
嘟嘟071715 小时前
TypeScript 工具类型通关:Pick、Omit、Partial、Record 区别与 Omit 等价实现一次讲清
设计模式·面试·typescript
SL_staff16 小时前
中小离散制造如何用工艺路线模板解决‘人走流程丢’——JVS-APS 实践解析
java·设计模式·全栈
Asize16 小时前
3 种设计模式 + DI:Nest.js 后端第一课
后端·设计模式·nestjs
St_rive1 天前
Page Object设计模式
java·开发语言·设计模式
烬羽2 天前
NestJS 依赖注入:Controller 里那个没有 new 的 service,到底从哪来的?
设计模式·typescript·nestjs
用户938515635072 天前
工厂模式与 Nest.js 核心思想 —— 从蜜雪冰城到企业级架构
后端·设计模式·nestjs
烬羽2 天前
从 nest new 到 Hello World:一个最小 NestJS 项目,讲透工厂 + 装饰器 + 模块化
设计模式·node.js·nestjs
艺艺生辉3 天前
从if-else到策略模式
后端·设计模式
小林ixn3 天前
单例模式:从弹窗管理到全局状态,一个模式搞定
前端·javascript·设计模式