<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LeonAPASS的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LeonAPASS</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LeonAPASS]]></copyright><item><title><![CDATA[设计模式 - D10 - 代理模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113875387</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113875387</guid><author>LeonAPASS</author><pubDate>Sat, 20 Feb 2021 07:15:48 +0800</pubDate><description><![CDATA[设计模式 - D10 - 代理模式代理模式定义
代理模式
定义

代理模式：为另一个对象提供一个替身或占位符以控制对这个对象的访问

使用代理模式创建代表，让代表对象控制某对象的访问，被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。
代理控制访问的方式：

...]]></description><category></category></item><item><title><![CDATA[设计模式 - D9 - 状态模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113856199</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113856199</guid><author>LeonAPASS</author><pubDate>Fri, 19 Feb 2021 01:06:31 +0800</pubDate><description><![CDATA[设计模式 - D9 - 状态模式状态机状态模式定义
状态机

假设现在有一台糖果机（GumballMachine），其状态包括有：HAS_QUARTER、NO_QUARTER、SOLD和SOLD_OUT四种；且insertQuarter、ejectQuarter等行动会使一个状态转换成另一个状态，那么这个状态机就可以使用Java对象实现为
public class GumballMachine {

    final static int SOLD_OUT=0;
    final static int ]]></description><category></category></item><item><title><![CDATA[设计模式 - D8 - 模板方法模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113839764</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113839764</guid><author>LeonAPASS</author><pubDate>Wed, 17 Feb 2021 23:30:45 +0800</pubDate><description><![CDATA[设计模式 - D8 - 模板方法模式抽象算法模板方法模式定义一般形式钩子 - hook好莱坞原则
抽象算法
假设现在我们有一个Coffe类和一个Tea类，他们分别实现了各自的饮料冲调方法
public class Coffee {

    public void prepareRecipe() {
        boilWater();
        brewCoffeeGrinds();
        pourInCup();
        addSugar();
    }

    publ]]></description><category></category></item><item><title><![CDATA[设计模式 - D7 - 适配器模式与外观模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113826544</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113826544</guid><author>LeonAPASS</author><pubDate>Tue, 16 Feb 2021 17:44:15 +0800</pubDate><description><![CDATA[设计模式 - D7 - 适配器模式与外观模式面向对象适配器示例适配器模式定义对象适配器 vs 类适配器装饰者模式 vs 适配器模式外观模式最少知道原则
面向对象适配器
假设已有一个软件系统，当我们希望他能与一个新的厂商类库搭配使用，但这个新厂商类所设计出来的接口不同于就厂商接口时，我们可以写一个类，在不改变现有代码的情况下，解决这个问题。这个类，就是适配器

示例
一只走起路来像鸭子，叫起来像鸭子，那么他必定可能是一只鸭子包装了鸭子适配器的火鸡！
假设我们现有Duck接口和Turkey接口，以及它们的实现类]]></description><category></category></item><item><title><![CDATA[设计模式 - D6 - 命令模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113810305</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113810305</guid><author>LeonAPASS</author><pubDate>Sun, 14 Feb 2021 19:48:41 +0800</pubDate><description><![CDATA[设计模式 - D6 - 命令模式封装调用命令模式定义基本命令模式命令（Command）建立调用者（Invoker）建立客户建立注：空对象支持撤销的命令模式命令（Command）调用者（Invoker）客户（Client）支持宏命令的命令模式命令模式的用途队列请求日志请求
封装调用
封装调用时指把运算块包装成形，而调用此运算的对象不需要关心事情是如何进行，只需如何使用包装成形的方法来完成即可。利用封装方法调用，可以完成一些记录日志等操作。因此，在此引入命令模式
命令模式
可将“发出请求的对象”从“接收与执行这]]></description><category></category></item><item><title><![CDATA[设计模式 - D5 - 单例模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113797398</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113797398</guid><author>LeonAPASS</author><pubDate>Fri, 12 Feb 2021 21:56:50 +0800</pubDate><description><![CDATA[设计模式 - D5 - 单例模式单例模式定义特点单例模式实现懒汉式单例模式线程问题饿汉式单例模式synchronizedsynchronized 同步方法双重检查加锁 - 同步代码块
单例模式
开发过程中，有一些对象，如：线程池、缓存等，只需要一个。如果制造出多个这样的实例，可能会导致许多问题产生。因此，在此引入单例模式。
虽然利用全局变量（如：Java的静态变量）也可以仅制造出单个实例，但相比之下，单例模式可以在需要时才创建对象，节省资源，相对灵活
定义

单例模式确保一个类只有一个实例，并提供一个全局访]]></description><category></category></item><item><title><![CDATA[设计模式 - D4 - 工厂模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113793058</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113793058</guid><author>LeonAPASS</author><pubDate>Fri, 12 Feb 2021 02:07:35 +0800</pubDate><description><![CDATA[设计模式 - D4 - 工厂模式使用 new 的缺陷工厂模式简单工厂工厂方法模式定义举例：PizzaStore依赖倒置原则抽象工厂模式定义举例：PizzaIngredientFactory工厂方法模式 vs 抽象工厂模式
开发过程中，实例化这个活动不应该总是公开地进行，因为这样会造成耦合问题。除了使用new操作符之外，还有更多制造对象的方法，在此将会介绍一种新的制造对象的方法-工厂模式。
使用 new 的缺陷
使用 new 时，如：Duck duck = new MallardDuck()，是在实例化一个具]]></description><category></category></item><item><title><![CDATA[设计模式 - D3 - 装饰者模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113787987</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113787987</guid><author>LeonAPASS</author><pubDate>Thu, 11 Feb 2021 04:02:14 +0800</pubDate><description><![CDATA[设计模式 - D3 - 装饰者模式装饰者模式开闭原则定义特点实现优缺点
装饰者模式
编写程序时，利用继承设计子类的行为是在编译时静态决定的，且所有子类都会继承到相同的行为；相反，利用组合的做法扩展对象的行为，可以在运行时动态地扩展，在使用新代码添加新功能的同时，无须修改现有代码，进而减少产生bug的机会
假设现在有一个超类Beverage，其中的属性代表了各式调料，cost()方法会计算所有调料的价钱；为了提供各式各样的饮料，每个子类都需要继承超类Beverage，并重写cost()方法，扩展超类的功能，计]]></description><category></category></item><item><title><![CDATA[SpringBoot实战 - 秒杀系统构建（2）]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/113750913</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/113750913</guid><author>LeonAPASS</author><pubDate>Mon, 08 Feb 2021 07:07:50 +0800</pubDate><description><![CDATA[SpringBoot实战 - 秒杀系统构建（2）0. 回顾1. 后端校验2. 跨域请求2.1. 产生跨域请求的原因2.2. 解决跨域请求2.2.1. JSONP方式2.2.2. CORSSpringBoot实现CROS2.2.3. 代理
0. 回顾
在上一篇博文中，主要介绍了一些web开发规范，包括有：Model、ViewObject、DataObject和CommonReturnType

CommonReturnType：主要用于前后端分离，具有data和status字段，status字段用于标识请求和]]></description><category></category></item><item><title><![CDATA[SpringBoot实战 - 秒杀系统构建（1）]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/112976477</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/112976477</guid><author>LeonAPASS</author><pubDate>Fri, 22 Jan 2021 07:35:25 +0800</pubDate><description><![CDATA[SpringBoot实战 - 秒杀系统构建（1）Model 与 ViewObjectModelViewObject一般返回类型 - CommonReturnType错误码 - CommonError

在完成了SpringBoot的学习后，本人开始学习一个电商秒杀系统的源码，尝试通过源码学习和动手搭建的方式来加强对SpringBoot框架的实践使用。不可否认的是，在学习源码的过程中，领悟到了许多在看书过程中学不到的开发方式，体会到了许多不同的开发需求，遂有此博文系列，分享学习过程中的笔记。

更多技术文章：]]></description><category></category></item><item><title><![CDATA[设计模式 - D2 - 观察者模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/112792681</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/112792681</guid><author>LeonAPASS</author><pubDate>Mon, 18 Jan 2021 19:22:22 +0800</pubDate><description><![CDATA[设计模式 - D2 - 观察者模式观察者模式定义目的：松耦合示例Java内置的观察者模式
观察者模式
观察者模式通俗来讲就是：发布者 + 订阅者，只是发布者一般被称为主题（Subject），订阅者一般被称为观察者（Observer）；

主题对象管理着某些数据，当主题内的数据改变时就会通知观察者并以某种形式送到观察者手上，而观察者则已经事先订阅主题，以便在主题数据改变时能收到更新

定义
观察者模式定义了对象之间的一对多依赖，这样一来，当一个对象改变状态时，他的所有依赖者都会收到通知并自动更新；实现观察者模]]></description><category></category></item><item><title><![CDATA[设计模式 - D1 - 策略模式]]></title><link>https://blog.youkuaiyun.com/LeonAPASS/article/details/112758392</link><guid>https://blog.youkuaiyun.com/LeonAPASS/article/details/112758392</guid><author>LeonAPASS</author><pubDate>Sun, 17 Jan 2021 22:01:01 +0800</pubDate><description><![CDATA[设计模式 - D1 - 策略模式策略模式示例开发阶段：父类Duck及其子类维护阶段：新增Fly方法使用接口改进使用策略模式改进
策略模式

策略模式定义了算法族并分别封装起来，让他们可以互相替换，此模式让算法的变化独立于使用算法的客户。
该模式体现了七大设计原则中的合成复用原则：多用组合/聚合，少用继承， 从而令系统具有更大的弹性。

示例
开发阶段：父类Duck及其子类

假设有一个父类Duck，里面定义了各种鸭子的行为，包括quack（呱呱叫）、swim（游泳）、display（外观），同时有子类Mal]]></description><category></category></item></channel></rss>