设计模式习题
面向对象设计原则
1.配置文件可以不修改源代码就更换驱动程序---开闭原则----------功能需求变化了,需求扩展,不改代码
2.A是B父类。C定义了A的对象obj为C的成员变量,C里还有一个setA的方法给obj变量赋值----里氏替换原则----通过父类的对象调用子类方法,可以替换父类
3.子类有新方法父类没有,父类变量去调用子类方法时,如果调用子类扩展的方法会报错---里氏替换原则---透明替换就是不报错
4.针对接口而非实现编程--针对抽象而非具体类编程---开闭原则
5.优先使用聚合组合而非继承,更加灵活容易扩展--合成复用原则
6. 高层不应该依赖于低层(抽象层,实现层),低层/实现应该依赖高层/抽象
7.开闭原则是可复用的基础--extension,modification
8.里氏替换原则---base class object , subclass object
9.依赖倒转原则---abstraction, implementation
10.继承复用和组合复用----继承复用,子类可以继承父类方法属性,而且可以选择性继承;-----继承复用会打破系统封装性因为父类都曝光在子类面前----合成复用,聚合,组合关系是将一个类的对象作为另一个类的成员变量(可以调用其方法)/成为新对象的一部分------合成复用是黑箱复用,因为没有暴露内部内容
11.应该着重针对抽象编程-----依赖倒转原则---因此说依赖关系集中于抽象类就是符合原则的
12.DB为链接数据库类,DAO为操作数据库内容类。二者关系应该是关联还是继承?---关联Association----合成复用原则
13.每个客户端需要一个更小的接口,只需要与之相关的方法---接口隔离原则---但并不是说只定义一个方法,而是需要的那些方法--应该说实现一个功能/代表一个角色
14.Demeter法则-----降低类之间的耦合度----不需要把类,函数设置为公有函数,毫无道理
15.Demeter法则的运用:客户端通过第三方间接访问远程对象(代理模式)
创建设计模式
1.面向对象的模式优势:可以复用成功的设计
2.简单工厂模式-----根据参数不同返回不同类的实例/子类对象----静态工厂方法(可以从static识别)---在简单工厂模式中,工厂类负责创建具体产品的实例。这些具体产品类通常都实现了一个共同的接口或者继承自一个抽象类。在这种情况下,抽象类或者接口定义了产品族的公共接口或行为。
选项 D 中提到了 Cipher 类中的 encrypt() 方法必须是一个抽象方法,这是错误的。在简单工厂模式中,并不要求抽象产品类的所有方法都是抽象的。具体产品类可以有自己的实现逻辑,而不必全部依赖于抽象方法。因此,encrypt() 方法可以是一个具体的方法,用于实现加密逻辑,而不必要求它是一个抽象方法
3.工厂方法---------不如抽象工厂一般化和抽象化(越一般化越抽象化)
4.抽象工厂--多于一个产品族被使用---等级结构更加简便,因为创建的模块比工厂方法少----增加产品族符合开闭原则,但增加等级结构不符合开闭原则,所以它不始终符合原则
5.一系列产品就是一个产品族---一个产品等级结构是一组有继承关系的产品
6.一般不指明,默认工厂模式为工厂方法---方法不能改静态,静态方法不能修改子类---当工厂方法是实例方法时,它可以被子类重写,从而允许每个具体的子类提供自己的工厂逻辑,以创建特定类型的产品。这种灵活性使得工厂方法模式更容易扩展和维护,因为它遵循了开闭原则,即对扩展开放,对修改关闭。如果工厂方法是静态的,就无法实现这种灵活性,因为静态方法不能被子类重写
7.建造者模式将构建与设计剥离---客户端不需知道创建细节----具体建造者之间没有依赖关系
8.原型模式---原型模式通过创建一个原型对象,然后通过复制这个原型对象来创建更多相同类型的对象,从而指定要创建的对象类型----每个类都需要配置一个克隆方法----浅拷贝只复制考虑的对象,而不是它引用的对象,这意味着其中的成员对象不会被复制。----深复制也可以,但是需要写复杂代码----如果一个类要支持克隆,它必须实现Cloneable接口-----在子类的clone()方法中,通常会调用super.clone()来获得父类的浅拷贝,然后再根据需要修改或者添加新的属性----通常,x.clone() != x,x.clone().getClass() == x.getClass()
9.单例模式适用---确保一个类只能创建唯一实例对象----可以被继承---必须本身创建,必须开发给整个系统-----
客户需要尽快打开目标,代理模式
考题
- 判断改错
- 简答
- 程序阅读填空
- 设计模式类图,核心代码(课件示例即可)
最终考题
选择102
改错53
问答55
程序填空102
设计模式类图,核心代码2*10
重点
1.UML关系三组
2.六大原则的名称和简介
3.创建型模式,结构型,行为型能够区分
4.简单工厂,工厂方法,抽象工厂,单例模式
5.适配器模式,组合模式,装饰模式。+代理模式的5个分类
6.行为型模式不考察,但是重要的命令,观察者,迭代器
7.体系结构的定义概念,MVC的功能含义。云计算服务的分类。I,P,S三种的区别
JAVA定义类,方法,变量即可
1.软件分为系统软件,应用软件
2.Software engineering is the application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of software.
3.Software architecture refers to the high-level structure of a software system,
encompassing the system's components, the** relationships** between them, and the
overall properties of the system.
4.The design method of software architecture refers to a series of design activities
aimed at obtaining a software architecture model that meets the system's functional
requirements (FR) and complies with certain non-functional requirements (NFR).
5.MVC architecture separates an application into three main components: the Model, the
View, and the Controller.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人