二、设计模式-必要的基础知识—旅行前的准备 #和设计模式一起旅行#[通俗易懂]

设计模式-谈谈模式和设计模式模式(Pattern),指事物的标准样式,百度百科上面说的,其实说白了模式就是我们现在说的套路!模式 == 套路模式是一种思想,说大了特别的复杂和深奥,不管怎么样模式的使用可以解决特定场景下特定的问题!准确表达:模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。软件模式那么在软件中使用模式,就是软件模式(Sof…

大家好,又见面了,我是全栈君。

必要的基础知识—旅行前的准备

工欲善其事,必先利其器。——《论语》

要开始一场旅行,准备的工作肯定不能少,不能太任性,一场说走就走的旅行,也需要基础条件的,那么本次就做做一些旅行之前的准备和说明,一场完美的旅行一定是经过准备后进行的,只有经过精心的准备我们才会在道路上玩的开始,玩的舒服。假如没有进行准备,就开始了旅行,出发前忘记了身份证,那么就尴尬了!好的了,废话不多说,下面开始说明本次旅途前需要带上的最基础的东西(知识/概念)。

面向对象(OO)基础 – #旅行必备

本次和设计模式一起去旅行使用的工具是java语言,那么必须要了解java的语法以及java中面向对象的核心思想!

抽象

抽象:一个概念或者一个想法不和具体的实例绑定!
简单的说就是一个概念,只说不做,不包含具体的实现!

在java中J关于抽象最常被讨论的是abstract类和interface!

Java 抽象类

Java 接口

继承[Java的特性]

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

Java 继承

封装[[Java的特性]]

封装: 指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

Java 封装

多态[[Java的特性]]

多态是同一个行为具有多个不同表现形式或形态的能力。

一定要记住:多态存在的三个必要条件
– 继承
– 重写
– 父类引用指向子类对象

Java 多态

软件的设计原则 – #一场完美的旅行要知道的原则

【摘自百度百科】
– 可靠性
– 健壮性
– 可修改性
– 容易理解
– 程序简便
– 可测试性
– 效率性
– 标准化原则
– 先进性
– 可扩展性
– 安全性

面向对象(OO)设计原则 – #旅行中的温馨提示

在旅途要注意的,不能人半夜出去逛,不能无车牌陌生人的车,不能吃路边树上的野果。。。。记住这些原则,旅途就会更安全一点。

在面向对象软件系统的设计中,能提供良好的可维护性,并同时提高系统的可复用和可扩展性是设计需要解决的核心问题之一。

请时刻记住这三条核心的原则:
1. 封装变化
2. 多用组合,少用继承
3. 针对接口编程,不针对实现编程

下面是常见六种面向对象的设计原则:

  • 单一职责原则(Single Responsibility Principle,SRP),一个类只负责一个功能中的相应职责
  • 开闭原则(Open-Closed Principle,OCP),软件实体对应的扩展开发,而对修改关闭
  • 里斯替换原则(Liskov Substituion Principle,LSP),所有引用基类的地方能够透明地使用其他子类对象
  • 依赖倒置原则(Dependence Inversion Principle,DIP),抽象不应该依赖细节,细节应该依赖于抽象
  • 接口隔离原则(Interface Segregation Principle,ISP),使用对个专门的接口,而不使用单一的总接口
  • 迪米特法则(Law of Demeter ,LoD),一个软件实体应当尽可能少地与其他实体发生相互作用

单一职责原则

单一职责原则,说简单点就是,一个类最好只负责一个领域的职责,或者说应该有且仅有一个原因引起类的变更!

比如一个用户接口类中有:
– (1)连接数据库
– (2)查询用户信息
– (3)生成用户报表

那么此时这个类就不是单一职责类!
用户接口类应该只包含用户信息查询一个!

开闭原则

抽象化(接口)是开闭原则的关键!
一句话,对修改关闭,对扩展开放。

里氏代换原则

里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。

面向对象中多态的使用!~

里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。

里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

依赖倒转原则

依赖倒转原则(Dependency Inversion Principle, DIP):抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

接口隔离原则

每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。

迪米特法则

迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。

在将迪米特法则运用到系统设计中时,要注意下面的几点:在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及;在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限;在类的设计上,只要有可能,一个类型应当设计成不变类;在对其他类的引用上,一个对象对其他对象的引用应当降到最低。

关于UML – #旅行指示和路标

旅途中我们会去很多地方,可能有时候会迷路,此时我们需要画一些路线图,或者看路标,这样能更加快速的让我们到达目的地。

在掌握了上面的基础知识和设计原则上,我们还要知道UML,这样能够快速的了解类和类之间的关系或者类和类之间的调用关系等!

UML(Unified Modeling Language)统一建模语言:能够让系统可视化,让规格和设计文档化的表现方法。

简单介绍几个:

类图

UML中的类图用于表示类、接口、实例等之间的相互静态关系,虽然叫做类图,但是图中不仅仅只有类。

软件设计——UML类图详解

时序图

UML时序图(sequence diagram):表示程序在工作时其内部方法调用的顺序,以及事件的发生顺序。

UML建模之时序图(Sequence Diagram)

类图表示的是类之间静态的关系,时序图表示类之间动态的关系!

画类图和时序图的工具很多,可以使用Visio,Jude等

参考

  • Java 教程

  • 《图解设计模式》

  • 《HeadFirst 设计模式》

本专栏文章列表

一、设计模式-开篇—为什么我要去旅行? #和设计模式一起旅行#
二、设计模式-必要的基础知识—旅行前的准备 #和设计模式一起旅行#
三、设计模式介绍—她是谁,我们要去哪里? #和设计模式一起旅行#
四、单例模式—不要冒充我,我只有一个! #和设计模式一起旅行#
五、工厂模式—旅行的钱怎么来 #和设计模式一起旅行#
六、策略模式—旅行的交通工具 #和设计模式一起旅行#
七、观察者模式——关注我,分享旅途最浪漫的瞬间! #和设计模式一起旅行#
八、装饰者模式—巴厘岛,奶茶店的困扰! #和设计模式一起旅行#
九、命令模式—使用命令控制奶茶店中酷炫的灯 #和设计模式一起旅行#
十、模板方法模式—制作更多好喝的饮品! #和设计模式一起旅行#
十一、代理模式 —专注,做最好的自己!#和设计模式一起旅行#
十二、适配器模式——解决充电的烦恼 #和设计模式一起旅行#
十三、外观模式—— 简化接口 #和设计模式一起旅行#
十四、迭代器模式—— 一个一个的遍历 #和设计模式一起旅行#
十五、组合模式—— 容器与内容的一致性 #和设计模式一起旅行#
十六、状态模式—用类表示状态 #和设计模式一起旅行#
十七、访问者模式-访问数据结构并处理数据 #和设计模式一起旅行#
十八、职责链模式-推卸责任,不关我的事,我不管!#和设计模式一起旅行#
十九、原型模式—通过复制生产实例 #和设计模式一起旅行#
二十、设计模式总结—后会有期 #和设计模式一起旅行#


如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到,谢谢!

如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页 : http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121104.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号