06 2021 档案
摘要:一、创建型模式:都是用来帮助我们创建对象的!(关注对象的创建过程) 1.单例模式 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 2.工厂模式("Gof book"中把工厂方法与抽象工厂分为两种模式,所以创建型模式共为五种,这里只是为了方便整理,合在了工厂模式中) -简单工厂模式 用来
阅读全文
摘要:一、UML基本介绍 二、UML图 三、UML类图 1.依赖关系 2.泛化关系(继承关系) 3.实现关系 4.关联关系 5.聚合关系 6.组合关系 UML类图图示样例:参考自《大话设计模式》 在idea中,以上所有关系在puml的写法如下:
阅读全文
摘要:一、合成复用原则介绍 二、合成复用原则引入 UML类图: 三、七大设计原则核心思想
阅读全文
摘要:一、迪米特法则介绍 二、迪米特法则引入 1.方式一(违反了迪米特法则) 代码及解析:在SchoolManager类的printAllEmployee方法中CollegeEmployee类 是以局部变量方式出现,这提升了两个类之间的耦合度,违反了迪米特法则。 public class Demeter1
阅读全文
摘要:一、开闭原则介绍 二、开闭原则引入 1.方式一(违反了开闭原则) UML类图: 代码及解析:这里所有Shape类的子类为提供方,GraphicEditor类为使用方。当需要增加一个"三角形提供方"的时候,除了要新增一个三角形类,还要在使用方中新增type判断分支以及drawTriangle方法。这违
阅读全文
摘要:一、里氏替换原则介绍 二、里氏替换原则引入 1.方式一(子类重写了父类的方法,违反了里氏替换原则) public class Liskov { public static void main(String[] args) { A a = new A(); System.out.println("11
阅读全文
摘要:一、依赖倒转原则介绍 二、依赖倒转原则引入 1.方式一(传统方式) public class DependencyInversion { public static void main(String[] args) { Person person = new Person(); person.rec
阅读全文
摘要:一、接口隔离原则介绍 二、接口隔离原则引入 1.方式一(违反了接口隔离原则) UML类图: 代码及解析:对A类来说,B类从接口中实现的4、5方法是多余的。对C类来说,D类从接口中实现的2、3方法是多余的。所以违反了接口隔离原则。 //接口 interface Interface1 { void op
阅读全文
摘要:一、单一职责原则介绍 二、单一职责原则引入 1.方式一(违反了单一职责原则) 解析:摩托车、汽车是公路上运行的,但飞机并不是在公路上运行的。 public class SingleResponsibility1 { public static void main(String[] args) { /
阅读全文
摘要:一、归并排序介绍 二、归并排序图解 三、归并排序代码实现(Java) public class MergetSort { public static void main(String[] args) { //int arr[] = { 8, 4, 5, 7, 1, 3, 6, 2 }; // //测
阅读全文
摘要:一、快速排序介绍 二、快速排序图解 三、快速排序代码实现(Java) public class QuickSort { public static void main(String[] args) { //int[] arr = {-9,78,0,23,-567,70, -1,900, 4561};
阅读全文
摘要:一、希尔排序介绍 二、希尔排序图解 三、希尔排序代码实现(Java) public class ShellSort { public static void main(String[] args) { //int[] arr = { 8, 9, 1, 7, 2, 3, 5, 4, 6, 0 }; /
阅读全文
摘要:一、插入排序介绍 二、插入排序图解 三、插入排序代码实现(Java) public class InsertSort { public static void main(String[] args) { //int[] arr = {101, 34, 119, 1, -1, 89}; // 创建要给
阅读全文
摘要:一、选择排序介绍 二、选择排序图解 三、选择排序代码实现(Java) public class SelectSort { public static void main(String[] args) { //int [] arr = {101, 34, 119, 1, -1, 90, 123}; /
阅读全文
摘要:一、冒泡排序介绍 二、冒泡排序图解 三、冒泡排序代码实现(Java) public class BubbleSort { public static void main(String[] args) { // int arr[] = {3, 9, -1, 10, 20}; // // System.
阅读全文
摘要:一、基数排序介绍 二、基数排序图解 1.第一轮排序 2.第二轮排序 3.第三轮排序 4.排序完成 注意:这里排序的轮数由数组中最大数的"位数"决定。 三、基数排序代码实现(Java) public class RadixSort { public static void main(String[]
阅读全文
摘要:一、方法的多态 二、对象的多态(重要) 对象多态的案例: 1.动物类 2.狗类继承动物类 3.猫类继承动物类 4.多态测试 三、多态的注意事项和细节(重要) 1.向上转型 2.向下转型 3.属性
阅读全文
摘要:一、继承给编程带来的便利 1、代码的复用性提高了。 2、代码的扩展性和维护性提高了。 二、继承的使用细节 1、子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问。 2、子类必须调用父类的构造器,完成父类的初始化。 3
阅读全文
摘要:1.思考题 2.解答 2.1第一行代码 1.在方法区中加载Person类的信息(属性信息、方法信息) 2.在堆空间中开辟对象的空间,分配了对象地址0x0011,age属性值为int的默认值0,name属性值为String的默认值null 3.在栈空间开辟Person类的引用变量p1的空间 4.将堆中
阅读全文
摘要:1.原码、反码、补码 2.位运算符 2.1案例(2&3、~-2、~2) 2.2案例(算术右移、算术左移)
阅读全文