自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

亚索@哈塞给

过眼云烟,一笑而过

  • 博客(202)
  • 资源 (5)
  • 收藏
  • 关注

原创 软件设计原则

在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。

2024-04-19 09:26:10 690

原创 简单工厂模式、工厂方法模式和抽象工厂模式有何区别?

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类。 抽象类创建不同品牌的键盘2、缺陷上面的工厂实现是一个具体的类KeyboardFactory,而非接口或者抽象类,getInstance()方法利用if-else创建并返回具体的键盘实例,如果增加新的键盘子类,键盘工厂的创建方法中就要增加新的if-else。这种做法扩展性差,违背了开闭原则,也影响了可读性。所以,这种方式使用在业务较简单,工厂类不会经常更改的情况。上面的工厂实现是一个具体的类KeyboardFactory,而非接口或者抽象

2024-04-19 08:41:40 1008

原创 24、大话设计模式之访问者模式

作用:1、表示一个作用于某对象结构中的各元素的操作,他使你可以在不改变元素的类的前提下定义作用于这些元素的新操作。2、访问者模式适用于数据结构相对稳定的系统,他把数据结构和作用于结构上的操作之间的耦合解开,使得操作可以相对自由的演化。3、访问者模式的目的就是把处理从数据结构中分离出来,如果系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式是比较适合的。4、访问者模式增加新的操作很容易,因为增加新的操作,就相当于增加一个新的访问者,访问者模式将有关的行为集中到一个访问者对象中。

2024-04-19 08:31:33 643

原创 23、大话设计模式之解释器模式

作用:1、给定一个语言,定义他的语法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2、主要解决,如果一个特定类型的问题发生的频率足够高,那么可能值得将问题的各个实例表述为一个简单语句中的句子,这样就可以构建一个解释器。该解释器通过解释这些句子来解决该问题。3、应用场景,当一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可以使用解释器模式4、编写新的编程语言可能会用到。

2024-04-19 07:37:47 424

原创 22、大话设计模式之享元模式

作用:1、运用共享技术有效的支持大量细粒度的对象,享元模式可以避免大量非常相似的开销。2、在程序中,有时需要生成大量细粒度的类实例来表示数据,如果发现这些实例除了几个参数外基本上都是相同的,有时就能大幅度减少需要实例化的类数量。如果把那些参数移到类实例外面,在方法调用时,将他们传递进来,就可以通过共享大幅度减少当实例的数目。

2024-04-18 23:12:47 306

原创 21、大话设计模式之中介者模式

作用:用一个中介对象,来分装一系列的对象交互,中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

2024-04-18 21:55:48 252

原创 20、大话设计模式之责任链模式

作用:这个可以参考SpringSecurity安全框架里面的多个Filter,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。

2024-04-18 21:38:15 161

原创 19、大话设计模式之命令模式

作用:将一个对象请求分装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作说白话:就是一个指挥者,一个操作者。指挥者让操作者干事。

2024-04-18 21:15:00 262

原创 18、大话设计模式之桥接模式

将抽象部分与它的实现部分分离,使他们都可以独立地变化。注意这里并不是说让抽象类和其派生类分离,实际上是抽象类和它的派生类用来实现自己的对象。在实际的开发系统中,可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合。

2024-04-18 19:02:06 271

原创 17、大话设计模式之单例模式

作用:保证一个类,仅有一个实例,并提供一个访问它的全局访问点。

2024-04-18 18:23:32 273

原创 16、大话设计模式之迭代器模式

作用:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示,当你需要对聚集有多种方式遍历时,可以考虑用迭代器模式,为遍历不同聚集结构提供如开始,下一个,是否结束,当前那一项等统一接口。迭代器模式:就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。

2024-04-18 15:11:35 205

原创 15、大话设计模式之组合模式

Component为组合中的对象声明接口,在适当情况下,实现所有类公共的接口的默认行为,声明一个接口用于访问和管理Component的子部件。Component为组合中的对象声明接口,在适当情况下,实现所有类公共的接口的默认行为,声明一个接口用于访问和管理Component的子部件。Composite定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关的操作,比如增加add和删除remove。1、Leaf在组合中表示叶子节点对象,叶子节点是没有子节点的。

2024-04-18 14:51:31 377

原创 14、大话设计模式之备忘录模式

作用:类似游戏里面人物血条,命,装备等存档,可以返回到存档点,该设计模式常常用于,功能比较复杂的,但是需要维护或者记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分,Originator(发起人)可以根据保存的备忘录信息还原到前一个状态。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。1、Originator(发起人):负责创建备忘录,用于记录当前时刻他内部的状态,并可使用备忘录恢复内部状态。

2024-04-18 11:05:15 352

原创 13、大话设计模式之适配器模式

作用:一个类的接口转换成客户希望的另外一个接口,使得原本由接口不兼容而不能一起工作的那些类可以一起工作,代码中核心的类就是适配器类白话:1、想象USB接口,充电不同的手机。在想使用一个已经存在的类,但是他的接口方法和你要求不相同,就需要考虑适配器模式。2、两个类所做的事情相同或者类似,但是具有不同的接口时需要使用适配器模式、3、客户代码可以统一调用同一个接口,就好像USB接口都不太容易修改的时候,而需要使用的设计模式。重点:功能要类似才能使用该设计模式。

2024-04-18 10:27:26 299

原创 12、大话设计模式之状态模式

作用:1、当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像改变了其类。2、主要解决当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不用状态的一系列类当中,可以把复杂的判断逻辑简化。说白话:通过判断某一个状态表达式,导致判断的if-else语句太多,就可以使用该模式。

2024-04-18 09:44:55 322

原创 11、大话设计模式之抽象工厂模式

作用:提供一个创建一系列相关或者相互依赖对象的接口,而无序指定他们具体的类。直白点就是一个工厂能生产更多类型的组件,比如电脑,有鼠标,主机,键盘等等,这个工厂就生产这一些列的东西,然后具体实现就是不同的厂商,比如联想,戴尔等等对应于具体的工厂。

2024-04-18 07:44:06 237

原创 10、大话设计模式之观察者模式

作用:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象状态发生变化时,会通知所有进行监听的观察者对象,使他们能够自动更新自己。使用得地方,在很多软件中,所有的控件都在进行监听,用户操作点击某一个按钮,软件监听所触发的事件的这样的一个过程。

2024-04-17 19:47:46 199

原创 9、大话设计模式之建造者模式

作用:建造的过程是一样的,但是创建出来的结果却是不同,就好比工厂造伞,伞的图案不同但是伞的结构是一样的、就造伞来说,防止多次造伞导致,出现缺胳膊少腿的情况。而核心依靠指挥者方能完成。

2024-04-17 18:22:31 193

原创 8、大话设计模式之外观模式

作用:说白了,就是将细节的内容分装了,外观类里面将其细节整合成一个方法方便外界调用,自然各子类也就变成了外观类的属性。下面两个案例,核心是外观类。

2024-04-17 16:15:36 170

原创 7、大话设计模式之模板方法模式

作用:就是将抽象的方法放到父类中,具体的实现延迟交由各个子类去实现,这也体现了模版方法的代码复用性,再直白点,公共的代码写在父类,具体再父类写抽象并引用,子类去实现这些抽象的方法即可。

2024-04-17 15:33:13 163

原创 6、大话设计模式之原型模式

1、克隆分成深克隆和浅克隆2、克隆可以使用实现Cloneable接口方式或者序列化方式3、使用Cloneable接口方式可以实现浅克隆,实现深克隆,如果类中还引用了其它的类属性,那就要使用实现深克隆,这时候使用clone方法就会很麻烦。4、使用序列化方式,实现Serializable接口,可以真正地实现深克隆。

2024-04-17 15:11:02 1022

原创 5、大话设计模式之工厂方法模式

工厂方法

2024-04-16 20:29:55 159

原创 4、大话设计模式之代理模式

说明:类似代理商,spring的AOP框架都用到代理,包含动态代理和静态代理。

2024-04-16 19:25:17 146

原创 3、大话设计模式之装饰模式

说明:1、简单点说明,就是不断的修饰,不断加东西在一个实体上,比如:游戏里面人物不断的添加装备。原来的东西都在,让其更加的完美2、常常是对旧功能的添加一些新的功能,不改变旧的功能。

2024-04-16 19:15:26 336

原创 2、大话设计模式之策略模式

说明:在商店计算商品,原来只是计算商品单价和数量,后来又增加了打折,满减等等优惠活动,对于这种不断出现新方案,可以使用策略模式。作用:根据不同类型做出相应的抉择,类似诸葛亮的锦郎妙计。从概念上来看,这些算法完成的都是相同的工作,只是实现不同。2、下面的是对抽象类进行实现3、下面的是简单工厂的核心4、测试和运行结果运行结果2、对抽象类进行实现3、核心代码(重点)对上面抽象类进行分装,通过多态的方式,传递不同的实现类,间接的调用不同

2024-04-16 16:57:27 290

原创 1、大话设计模式之简单工厂模式

作用:输入想要的内容自动帮你创建对象。

2024-04-16 12:14:21 191

转载 IDEA导入Spring源码环境搭建

打开项目之后,设置Gradle,Gradle user home这个目录这里我设置的刚安装的gradle目录。这个目录你就可以认为相当于是我们的本地的maven仓库,gradle编译项目所依赖的jar都会下载后放入这个目录中。因为gradle每次编译都会从官网下载指定版本,所以我们在它第一次下载完之后,将distributionUrl设置成本地文件,这样就不会每次编译都从官网下载了。既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。注:下载慢可以参考我之前的文章。

2024-04-16 09:29:50 88

转载 动态代理的两种实现方式

1、字面意思,代理就是代替别人去做一些事情,如线下店代替工厂去卖电脑、代理工厂做售后工作,线下店就是代理商,从卖给工厂的获得的钱提取分成就是增强的方法。2、Java中就是在不改变别别的类,对类做增强处理,如打印日志、事物的控制,权限的管理,后续我们都会介绍。1、JDK动态代理,自带的,方便使用,但是要要求必须实现接口,有一定的约束。2、cglib,需要导入第三方jar包,使用的时候没有什么约束。3、SpringAOP以上2种方法都用到了。

2024-04-16 08:56:19 286

转载 十八:Java8新特性

Java 8 (又称为jdk 1.8) 是Java 语言开发的一个主要版本。Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。/** 4.Lambda表达式的本质:作为函数式接口的实例* 5. 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。我们可以在一个接口上使用 @FunctionalInterface 注解,

2024-04-14 08:28:35 361

转载 十七:反射与动态代理

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。1、动态语言。

2024-04-14 08:26:34 20

转载 十六:网络编程

Java是Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java 的本机安装系统里,由JVM 进行控制。并且Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。

2024-04-14 08:24:10 20

转载 十五:IO流

1.2、File类的常用方法11.3、File类的常用方法21.4、课后练习02、IO流原理及流的分类2.1、IO流原理I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)”的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程

2024-04-14 08:23:09 16

转载 十四:泛型

1、OrderTest类/*** 自定义泛型类*///类的内部结构就可以使用类的泛型T orderT;//如下的三个方法都不是泛型方法@Override'}';//泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系。//换句话说,泛型方法所属的类是不是泛型类都没有关系。//泛型方法,可以声明为静态的。原因:泛型参数是在调用方法时确定的。并非在实例化类时确定。2、SubOrder类。

2024-04-13 18:35:09 25

转载 十三:集合

Java 集合可分为 和 两种体系02、Collection接口方法Collection 接口是List、Set 和Queue 接口的父接口,该接口里定义的方法既可用于操作Set 集合,也可用于操作List 和Queue 集合。JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set和List)实现。在Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成Object 类型处理;从JDK 5.0 增加了泛型以后,Java 集合可以记住容器中对象的数据类型。

2024-04-13 18:33:55 38

转载 十二:枚举与注解

枚举类的属性枚举类对象的属性不应允许被改动, 所以应该使用修饰枚举类的使用修饰的属性应该在构造器中为其赋值若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数/*** 一、枚举类的使用* 1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类。* 2.当需要定义一组常量时,强烈建议使用枚举类* 3.若枚举只有一个对象, 则可以作为一种单例模式的实现方式。* 二、如何定义枚举类* 方式一:JDK1.5之前需要自定义枚举类。

2024-04-13 18:32:28 22

转载 十一:常用类

*** String的使用/*** String:字符串,使用一对“”引起来表示。* 1.String声明为final的,不可被继承* 2.String实现了Serializable接口:表示字符串是支持序列化的。* 实现了Comparable接口:表示String可以比较大小* 3.String内部定义了final char[] value用于存储字符串数据* 4.String:代表不可变的字符序列。简称:不可变性。* 体现:/*** String的使用/**

2024-04-13 18:31:21 19

转载 十:多线程

提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。以单核CPU为例,只使用单个线程先后完成多个任务(调用多个方法),肯定比用多个线程来完成用的时间更短,为何仍需多线程呢?经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。Java中的线程分为两类:一种是守护线程,一种是用户线程。多个线程对账本的共享,会造成操作的不完整性,会破坏数据。:工具类、线程池的工厂类,用于创建并返回不同类型的线程池。多个线程执行的不确定性引起执行结果的不稳定。:真正的线程池接口。

2024-04-13 18:29:57 19

转载 九: 异常

在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性的代码进行处理。/*

2024-04-13 18:27:52 14

转载 八:面向对象(下)

** 自定义数组工具类*/// 求数组的最大值i++) {// 求数组的最小值i++) {// 求数组总和i++) {return sum;// 求数组平均值//如下两个同名方法构成重载// 反转数组i++) {// 复制数组i++) {// 数组排序i++) {j++) {//错误的://错误的:交换数组中两个指定位置元素的值// i = j;// }//正确的:// 遍历数组。

2024-04-13 18:26:09 20

转载 七:面向对象(中)

4、将上述 Person 类改为如下。CheckAccountTest类。3、Java 中关于继承性的规定。GeometricObject类。GeometricObject类。GeometricTest类。CheckAccount类。ToStringTest类。5、Creature 类。AccountTest类。PersonTest 类。MyRectangle类。2、Student 类。1、Person 类。2、Student类。2、Student类。Ordertest类。OrderTest类。

2024-04-13 18:24:33 17

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除