栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

常用6个设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

常用6个设计模式

设计模式总结图:

软件设计原则:
(单,开,里,依,接,合,迪)
(单开李义姐盒底)
1单一职责:一个类之包含一个职责。
2开闭原则:对扩展开放,对修改关闭。使程序的扩展性更好,方便升级和维护。
3里氏替换原则(LSP):任何基类可以出现的地方,子类也可以出现。是对开闭原则的补充。
4依赖倒转原则:依赖于抽象,不要依赖与具体。对抽象进行编程,不要对实现进行编程,从而降低了客户与实现模块间的耦合。
5接口隔离原则:使用多个隔离的接口,好过只使用一个接口。降低依赖,降低耦合。
6合成复用原则:合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;
7迪米特法则(最少知道原则):一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

常用的模式:
(单,工,策,观,迭,模)单工侧关地魔
单列,工厂,策略,观察者,迭代器,模板。
1单例模式:
通过单例模式可以保证系统类中只存在一个实例且易于外界访问。
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
例如:
一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

2工厂模式
在创建对象时不会对客户端暴露创建逻辑,主要解决接口选择的问题。
定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
比如:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

我们将创建一个 Shape 接口和实现 Shape 接口的实体类。下一步是定义工厂类 ShapeFactory。
FactoryPatternDemo 类使用 ShapeFactory 来获取 Shape 对象。它将向 ShapeFactory 传递信息(CIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。

3策略模式:
定义了算法族,将其分别封装起来,让他们之间可以相互转换。
应用场景如下。

a、 一件事情,有很多方案可以实现。

b、我可以在任何时候,决定采用哪一种实现。

c.、未来可能增加更多的方案。

d、 策略模式让方案的变化不会影响到使用方案的客户。

例如:
1系统的操作都要有日志记录,通常会把日志记录在数据库里面,方便后续的管理,但是在记录日志到数据库的时候,可能会发生错误,比如暂时连不上数据库了,那就先记录在文件里面。日志写到数据库与文件中是两种算法,但调用方不关心,只负责写就是。

2 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

3如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

4观察者模式
观察者模式又被称为发布订阅模式,定义了对象之间一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
观察者和被观察者之间是抽象耦合的,建立了一套触发机制。
例如:
1lol中游戏胜利或结束时所有英雄,小兵,野怪都不能动。
2过红绿灯时行人和车辆都在观察红绿灯,红灯停,绿灯行。

5迭代器模式
提供一种顺序访问一个聚合对象中各种元素,而又无需暴露该对象的内部表示。
将类封装成类似迭代器的东西,让外界可以顺序访问类中的元素。
定义接口:hasNext, next。

6模板方法模式
模板方法模式定义一个操作中的算法的骨架,将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构可以重定义该算法的某些步骤。
在抽象类实现,其他步骤在子类实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号