当前位置:首页 > Java技术 > Java中的设计模式和算法

Java中的设计模式和算法

2022年09月17日 09:13:13Java技术10

今天内容:

(1)常用的设计原则

(2)常用的设计模式

(3)常用的查找算法

(4)常用的排序算法

1.常用的设计原则(记住)

1.1 软件开发的流程

需求分析文档 => 概要设计文档 => 详细设计文档 => 编码和测试 => 安装和调试
=> 维护和升级

1.2 常用的设计原则

Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
开闭原则 - 对扩展开放,对修改关闭。
- 提高了代码的扩展性和维护性。(封装后尽量不要改)
如:
public class Person {
private String name;
private int age;

}
public class SubPerson extends Person {

  private boolean gender;
  ... 

}

里氏代换原则 - 任何父类可以出现的地方,子类一定可以出现。
- 子类 is a 父类。
- 在以后的开发中**多使用继承和多态(屏蔽不同子类的差异性,实现父类的通用性)**的理念。
如:
public static void draw(Shape s){
s.show();
}
ShapeTest.draw(new Rect(1, 2, 3, 4));
ShapeTest.draw(new Circle(5, 6, 7));

依赖倒转原则 - 尽量多依赖于抽象类和接口,而不是具体实现类。
- 在以后的开发中多使用抽象类和接口,对子类具有强制性和规范性
如:
public abstract class Account {
public abstract double getLixi();
}
public class FixedAccount extends Account {
@Override
public double getLixi(){}
}

接口隔离原则 - 尽量依赖于小接口而不是大接口,避免接口的污染。
- 可以降低耦合度
- 耦合主要指一个模块与其它模块之间的关联度
如:
public interface RunAnimal {
public abstract void run(); // 描述奔跑的行为
}
public interface FlyAnimal {
public abstract void fly(); // 描述飞行的行为
}
public class Dog implements RunAnimal {
public void run(){ … }
}
Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记

迪米特法则(最少知道原则) - 一个实体应当尽量少于其它实体之间发生相互作用。
- 低耦合,高内聚
- 高内聚就是指将一个实体应当将该实体应该拥有的功能尽量聚集在该实体内部

合成复用原则 - 尽量多使用合成的方式,而不是继承的方式。
如:
public class A {
public void show() { … }
… …
}

//public class B extends A{ 不推荐
public class B {
private A a;

   public void test() {
       // 调用show方法
       a.show();
   }

}

2.常用的设计模式(重点)

2.1 基本概念

设计模式就是一种用于固定场合的固定套路,是多年编程经验的总结。

2.2 常用的设计模式

单例设计模式、模板设计模式、工厂方法模式、抽象工厂模式。
1:Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
按照类图写代码。
解读图例:一个接口Sender,两个工厂的实现类MailSender、SmsSender,一个实现方法SenderFactory
代码实现:DEMO1实现代码
// 该方式的缺点:当传入的字符串出错时,可能引发空指针异常

2:
Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
3:
Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
代码实现:DEMO3实现代码

练习:目前的工厂模式可以实现邮件和短信的发送, 若希望实现包裹(Packet)的发送如何处理?
作业:DEMO4实现代码

4:
Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
实现代码:DEMO5实现代码

3.常用的查找算法(重中之重)

3.1 线性/顺序查找算法

Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
实现代码:DEMO6实现代码

3.2 二分/折半查找算法

Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
实现代码:DEMO7实现代码

4.常用的排序算法(重中之重)

4.1 冒泡排序算法

Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记
实现代码:DEMO8实现代码

Java中的设计模式和算法 _ JavaClub全栈架构师技术笔记

作业:
1.重点掌握查找算法和排序算法。
2.复习和总结JavaSE的所有内容。

代码实现: 实现代码

加油,站住脚步!!!

作者:Recently 祝祝
来源链接:https://blog.csdn.net/qq_45656077/article/details/117486017

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42466.html

分享给朋友:

“Java中的设计模式和算法” 的相关文章

Java空指针异常解决java.lang.NullPointerException解决心得

Java空指针异常解决java.lang.NullPointerException解决心得

今天做课设的时候运行程序报出以下错误 java.lang.NullPointerException 首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。 是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时...

常用设计模式系列(四)—建造者模式

常用设计模式系列(四)—建造者模式

一、前言 “山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?” ​ ——《陋室铭》刘禹锡 ​ 唐代诗人刘禹锡使用短...

Java 内存模型

Java 内存模型

📦 本文以及示例源码已归档在 javacore Java 内存模型(Java Memory Model),简称 JMM。 JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。...

冒泡排序的原理,思路,以及算法分析(Java实现)

冒泡排序的原理,思路,以及算法分析(Java实现)

冒泡排序 如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第...

Java实现阶乘运算

n!=123*…n 学习编程就是要了解从问题到程序是如何实现的 Scanner in=new Scanner(System.in); int n ; n=in.nextInt(); // int i=1; int factor=1;...

我对java String的理解 及 源码浅析

我对java String的理解 及 源码浅析

摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 每天起床告诉自己,自己的目标是 ”技术 + 英语 还有生活“! -泥沙砖瓦浆木匠 一...

全网最细笔记java与kotlin的一些异同

本文主要介绍java与kotlin的一些异同 后面可能还会继续比较kotlin和dart 期待吗? 打印日志 Java System.out.print("Amit Shekhar"); S...

图解 Java IO : 二、FilenameFilter源码

图解 Java IO : 二、FilenameFilter源码

Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆  &...

java提高篇(二五)

java提高篇(二五)

      在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个...

程序人生|五年java 含泪总结,建议小白看

程序人生|五年java 含泪总结,建议小白看

关注公众号“AI码师”领取2021最新面试资料和java学习路线 最近在网上看到很多人都在写自己的工作总结,我在想我要不要也跟风一下,思考之后,于是就有了这篇文章 这篇文章主要讲述了自己的一些工作经验,和一些在学习j...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。