- 博客(19)
- 收藏
- 关注
原创 (十三)Java架构师成长之路-设计模式:模板方法模式
一.定义当某个任务的执行步骤固定时,可以将这个步骤封装到一个方法里,这个方法固定不变,子类可以对具体的步骤有不同的实现,也可以使用父类默认的实现。属于行为型模式二.写法封装一个抽象类,定义执行固定步骤任务的方法,public abstract class AbstractTaskTemplate { protected void execute() { step1(); step2(); step3(); }
2020-10-18 22:24:06 160
原创 (十二)Java架构师成长之路-设计模式:委派模式
一.定义委派对象并不知道如何处理请求,它会把任务交给要委托的对象去完成。属于行为型模式二.通用写法举一个boss给员工下发任务的例子,日常生活中boss通常不会给员工直接下发任务,而是由各个部门的领导下发,这个时候领导就可以充当为委派对象。新建一个EmployeeA类public class EmployeeA { public void doTask() { System.out.println("员工A执行任务"); }}新建一个Emp.
2020-10-18 22:01:23 143
原创 (十一)Java架构师成长之路-设计模式:桥接模式
一.定义使用组合的方式,给两个不同维度的功能之间增加一个桥梁属于结构型模式二.通用写法以发送消息为例吧,消息发送有两个维度,一个是消息类型,有邮件消息,短信消息等,另一个是消息紧急程度,有普通消息和加急消息。我们在这两个维度之间增加一个桥梁,来说明桥梁模式如何应用。新建一个消息类型接口public interface IMessage { void sendMessage();}新建一个邮件消息类,实现这个接口public class EmailMes...
2020-10-18 00:10:37 178
原创 (十)Java架构师成长之路-设计模式:适配器模式
一.定义在不改变原有代码的情况下,对功能进行适配。属于结构型模式二.通用写法新增一个接口,封装要新增的功能。新建一个适配器继承原有的类并且实现这个新的接口。原有功能类public class OriginElectricity { public void output220V() { System.out.println("输出220v..."); }}需要新增的功能public interface NewElectricity {
2020-10-17 18:34:23 107
原创 (九)Java架构师成长之路-设计模式:组合模式
一.定义组合模式也叫整体-部分模式,目的是为了实现整体和部分都有一组相同的操作方法。属于结构型模式注意区别一下组合和聚合的区别:组合:各部分组织结构有相同的生命周期,例如人的各个器官和人,人死了器官也就消亡了;文件夹删了里面的文件也没了聚合:各部分组织结构不具有相同生命周期,一个离开了另一个还能存活,例如桌子和电脑二.实现1.组件抽象组件:一般是一个接口或者抽象类,定义通用的行为具体组件:实现抽象组件的方法,定制自己的行为2.通用写法举一个文件目录的例子吧定义
2020-09-28 17:36:25 120
原创 (八)Java架构师成长之路-设计模式:享元模式
一.定义享元模式又称轻量级模式,是对象池的一种实现。类似于线程池,可以减少系统的资源消耗,可以对一些对象实现重复利用。属于结构型模式二.通用写法抽象享元组件:一般是一个接口或者抽象类具体的享元对象:实现抽象享元的行为,有自己的内部状态和外部状态享元工厂:用于缓存享元对象,里面维护一个单例容器下面来看一个例子买火车票的时候可能会有很多个乘客出发地目的地这些信息相同,那么就不需要每次都new一个对象,我们可以使用享元模式,直接从缓存中拿首先我们定义一个抽象享元接口:pu
2020-09-26 23:31:47 97
原创 (七)Java架构师成长之路-设计模式:装饰器模式
一.定义在不改变原有对象行为的基础上,扩展对象的功能。属于结构型模式二.通用写法一般来说装饰器模式有这么几个功能Component:抽象组件ConcreteComponent:具体的组件,也就是被装饰的对象Decorator:抽象装饰器ConcreteComponent:具体的装饰器下面来看一个简单的例子买煎饼的时候可以加鸡蛋可以加火腿,也可以什么都不加。我们用装饰器模式来模式一下这个场景首先定义一个抽象组件public abstract class Pan
2020-09-26 17:54:35 119
原创 (六)Java架构师成长之路-设计模式:门面模式
一.定义创建一个接口来调用其他系统的服务,而不是直接使用客户端调用。二.代码以生活中在网上购买商品为例新建库存服务类public class StockService { public boolean deduct() { System.out.println("库存扣减成功..."); return true; }}支付服务public class PaymentService { public boolean
2020-09-14 01:00:46 146
原创 (五)Java架构师成长之路-设计模式:代理模式
一.定义为其他对象提供一种代理,以便控制对这个对象的访问,起到一种中介的作用。属于结构型模式生活中的媒婆、快递小哥、房产中介等等都可以看做是代理模式。二、详细介绍代理模式分为两种,一种是静态代理,另一种是动态代理。静态代理:由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前代理类的.class文件就已经存在了,是一种硬编码的方式。动态代理:有jdk的动态代理和cglib的动态代理,是通过编译期间动态生成字节码文件来实现。1.代码实现静态代理我们以生
2020-09-13 22:46:39 183 1
原创 (四)Java架构师成长之路-设计模式:工厂模式
本篇主要是简单工厂模式、工厂方法模式和抽象工厂方法模式的学习总结一.简单工厂模式1.定义由一个工厂对象决定创建哪种产品的实例属于创建型模式,但它不属于23种设计模式之一2.实现首先抽象出一个顶层接口(这里课程的行为我们先不管它,不是重点)public interface ICourse {}创建一个JavaCourse类,实现ICourse接口public class JavaCourse implements ICourse{}创建一个PythonCours
2020-09-08 00:14:06 126
原创 (三)Java架构师成长之路-设计模式:建造者模式
一.什么是建造者模式建造者模式是将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示。适用于创建一个对象需要很多步骤,而这些步骤顺序又不固定的场景。属于创建型模式。二.建造者模式的通用写法1.先来看一个通用写法吧,我们以课程为例创建一个课程类,这个类有video,note,ppt三个字段public class Course { private String video; private String note; private
2020-09-06 22:48:51 122
原创 (二)Java架构师成长之路-设计模式:原型模式,浅克隆和深克隆
一.什么是原型模式原型模式是指原型对象指定创建对象的种类,并通过拷贝这些原型的方式创建新的对象。调用者不需要知道创建对象的细节,不调用构造函数就能创建对象。属于创建型模式。目的是为了减少创建对象的复杂度,提升系统性能,一般是基于二进制流的拷贝。二.原型模式的通用写法我们先来看一下原型模式的通用写法先创建一个顶层接口public interface IProtoType<T> { // 第一种方法 T clone(); // 第二种方法
2020-09-06 16:56:47 194 1
原创 (一)Java架构师成长之路-设计模式:单例模式
一、什么是单例确保任何情况下都只有一个实例二、单例分类饿汉式单例、懒汉式单例、注册式单例、ThreadLocal单例接下来我们分别看一下这些单例的写法1.饿汉式单例第一种写法:public class LazyHanSingleton { private static LazyHanSingleton instance; private LazyHanSingleton() {} public static LazyHanSingleton get
2020-09-06 00:57:41 132
原创 spring data jpa项目启动报错,Caused by: org.hibernate.AnnotationException: No identifier specified for enti
解决方法:在实体类上添加@MappedSuperclass注解。因为我的实体类都有id字段,所以我抽象出来一个IdEntity基类,之后忘了给它添加@MappedSuperclass注解;如果你的实体类没有父类IdEnity,只在实体类的id字段添加如下代码,@column不是必须的。...
2018-11-24 14:29:10 389
原创 搭建eclipse+tomcat+maven+shiro+springmvc+jpa项目(二):基本框架搭建
1、pom.xml配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/...
2018-11-24 11:20:49 179
原创 搭建eclipse+tomcat+maven+shiro+springmvc+jpa项目(一):技术选型及架构文档
一、Java语言Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。图1 TIOBE编程语言排行榜从图1中我们可以看出,Java一直稳居第一,它具有简单性、面向对象...
2018-11-19 21:42:55 535
原创 刚建好的maven工程没有src/main/java和src/test/java目录
在项目上右键,选择properties->Java Build Path,选择Libraries选项卡,点击edit选择第二个Alternate JRE点击finish,然后apply。如有疑问,欢迎评论留言。
2018-09-16 01:01:53 286
原创 mysql8.0.12解压版安装教程
1、首先在官网上下载mysql8.0.12的压缩包;https://dev.mysql.com/downloads/mysql/2、下载成功后解压到任意目录,比如我的是E:\download\mysql-8.0.12-winx64;3、配置环境变量,在系统变量path的末尾追加解压后的bin文件夹所在目录:E:\download\mysql-8.0.12-winx64\mysql-...
2018-08-04 22:36:28 10166 6
原创 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a jdk?
关于maven项目中出现:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a jdk?在eclipse中依次选择window->preferences->java->installed jres,图中箭头所指的location一定要是jdk路径而不是...
2018-07-15 21:52:47 206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人