设计模式一

简介: 设计模式是面向对象编程的实践经验,旨在解决一系列问题,促进软件的可升级和维护。它分为创建型(如工厂、单例模式)、结构型(适配器、装饰器模式等)和行为型(观察者、策略模式等)三大类。J2EE模式关注表示层,包括MVC模式等。设计模式的七大原则包括里氏替换、依赖倒置、开闭原则、单一职责、接口隔离、迪米特原则和合成复用原则,这些原则有助于减少耦合和提高代码可读性。接口作为契约和层间对接工具,约束类型行为并允许实现多继承。

简介

设计模式是一种最佳实践,是长期起来总结的解决一系列问题的一种套路。

一般针对面向对象语言而言,从大型软件架构出发,便于升级和维护的软件设计思想,强调降低依赖耦合

目的:代码重用和工程化

类型

创建型:创建对象的同时隐藏创建的业务逻辑

工厂模式、单例模式、建造者模式、原型模式

结构型:将现有的类和对象组织在一起形成更强大的功能结构

适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式、代理模式

行为型:主要关注对象之间的通信

观察者模式、责任链模式、命令模式、解释器模式、中介模式、备忘录模式、状态模式

空对象模式、策略模式、模板模式、访问者模式

J2EE模式(因为Sun公司定的):主要关注表示层

MVC模式、拦截过滤器

七大原则

一、里氏替换:任何父类出现的地方子类都一定可以出现

防止继承泛滥

子类可以添加自有的方法,但是用父类接收时,是不能用子类特有方法或者特有成员的。

如果子类拥有和父类一样的属性或者方法或者其他非私有成员,此时会隐藏父类相同的非私有成员。

但是具体用的是父类的非私有成员还是子类的非私有成员,主要看声明的类型

如果需要解除这个限制,需要父类非私有成员声明为virtual,子类需要override

要求:

子类方法输入参数不能比父类更严格,返回值不能比父类宽松

二、依赖倒置原则:依赖于抽象而不依赖于具体。

是开闭原则的基础。面向接口编程,有利于代码的升级和扩展

三、开闭原则:对扩展开放,对修改关闭

在原程序需要扩展的时候,不能去修改原有的代码。降低维护带来的风险

四、单一职责原则:对象不应该承担太多职责

便于理解,提高代码的可读性

如果一个对象承担太多职责,则会引发:

1.类中的一个方法的改变可能会影响到这个类中的其他方法,从而导致这个类的不稳定。

2.对象需要某个方法时,不得不将其他不需要的方法一并包含进来

操作:把一个大类,按照领域或者业务拆分成小类
五、接口隔离原则 接口最小化,类最大化

多个接口比单个接口好,系统为了追求稳定应该依赖于其足够使用的最小接口,而不应该依赖于其他不需要的接口。

也可以降低类之间的耦合度

六、迪米特原则(最少知道原则)

降低耦合

一个实体应当尽量少的与其他实体之间发生相互作用,使系统的模块能够相互独立

七、合成复用原则:尽量使用合成和聚合,而不是使用继承

降低耦合

依赖:例如我们需要玩手机,于是我们对手机产生了依赖关系。依赖关系是四种关系中耦合度最小的。被依赖的类,一般在依赖类中会以返回值、形参、局部变量等方式出现。画图时一般以虚线箭头表示

关联:学生与老师,学生可以不玩手机,但是不能没有老师,没有老师,也没有所谓的学生。关联暗示依赖,但是耦合关系最强。可分为单向关联、双向关联、自身关联、多维关联

组合:主要是集体和个体之间的关系,如公司和员工

聚合:个体与组成部分的关系,如汽车和轮胎

接口的意义

1.接口可以规范和约束我们的类型,一旦在接口定义了未实现的方法声明,其实现的接口子类就必须实现该接口声明的未实现方法

2.用于项目之间的契约和层间的对接

3.在.net6的接口中,是可以写方法实现的(和c++一样实现了多继承),如果多个接口有同样的方法实现,那么哪个接口接收这个类的对象,就调用了哪个接口的方法。如果子类重写了该方法,一律调用的是子类重写的方法。

相关文章
|
8月前
|
设计模式 算法 关系型数据库
23种设计模式总结
23种设计模式总结
61 0
|
1月前
|
设计模式 缓存 算法
设计模式
设计模式
12 0
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
35973 13
设计模式(C++版)
|
10月前
|
设计模式
我所认识的设计模式
我所认识的设计模式
43 0
|
11月前
|
设计模式
设计模式——里氏替换
设计模式——里氏替换
|
11月前
|
设计模式 算法 C#
使用c#实现23种常见的设计模式
使用c#实现23种常见的设计模式
62 0
|
11月前
|
设计模式
|
设计模式 程序员
设计模式(二)
设计模式
110 1
|
设计模式 Java
23种设计模式-总揽篇
23种设计模式-总揽篇
23种设计模式-总揽篇
|
设计模式 Java