<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[michaelhuang45的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/michaelhuang45</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; michaelhuang45]]></copyright><item><title><![CDATA[创建型-单例模式]]></title><link>https://blog.youkuaiyun.com/michaelhuang45/article/details/123746574</link><guid>https://blog.youkuaiyun.com/michaelhuang45/article/details/123746574</guid><author>michaelhuang45</author><pubDate>Fri, 25 Mar 2022 22:00:37 +0800</pubDate><description><![CDATA[创建单例
关键点：

构造函数必须是private访问权限，避免外部直接new一个对象；
需要考虑创建时的线程安全问题；
获取单例对象时的性能是否高（是否加锁）；
是否支持延迟加载；

实现方式：
饿汉式：
饿汉式是在类加载时就创建了对象，所以创建对象的过程是线程安全的。这种实现方式有这些特点：


不支持延迟加载，初始状态就加载了对象；


没有线程安全问题；


不需要加锁；


饿汉式的示例代码如下：
public class Logger {
    private static final Log]]></description><category></category></item><item><title><![CDATA[设计原则简析]]></title><link>https://blog.youkuaiyun.com/michaelhuang45/article/details/123458392</link><guid>https://blog.youkuaiyun.com/michaelhuang45/article/details/123458392</guid><author>michaelhuang45</author><pubDate>Sun, 13 Mar 2022 13:47:17 +0800</pubDate><description><![CDATA[单一职责
单一职责即SRP(Single Responsibility Principle)，指一个类或者一个模块只负责完成一个职责（或者功能），即高内聚、低耦合。
不要设计大而全的类，要设计粒度小、功能单一的类。换个角度来讲就是，一个类包含了两个或者两个以上业务不相干的功能，那我们就说它职责不够单一，应该将它拆分成多个功能更加单一、粒度更细的类。 但是在判断功能是否单一时，需要根据实际使用情况做出判断。这里有一些可以参考的原则，来判断类是否满足单一职责：

类中的代码行数、函数或属性过多，会影响代码的可读]]></description><category></category></item><item><title><![CDATA[面向对象简析]]></title><link>https://blog.youkuaiyun.com/michaelhuang45/article/details/123458340</link><guid>https://blog.youkuaiyun.com/michaelhuang45/article/details/123458340</guid><author>michaelhuang45</author><pubDate>Sun, 13 Mar 2022 13:44:32 +0800</pubDate><description><![CDATA[文章目录四大特性封装抽象继承多态面向对象与面向过程比较面向过程的特性面向对象的相对优势日常开发中一些面向过程开发风格的问题滥用getter、setterConstants、Utils类的设计问题基于贫血模型的开发模式接口与抽象类接口抽象类基于接口而非实现编程组合与继承需求分析划分职责进而识别出有哪些类定义类及其属性和方法定义类与类之间的交互关系将类组装起来并提供执行入口
面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元，并将封装、抽象、继承、多态四个特性，作为代码设计和实现的基石 。]]></description><category></category></item><item><title><![CDATA[Spring IOC简析]]></title><link>https://blog.youkuaiyun.com/michaelhuang45/article/details/123297049</link><guid>https://blog.youkuaiyun.com/michaelhuang45/article/details/123297049</guid><author>michaelhuang45</author><pubDate>Sat, 05 Mar 2022 16:38:57 +0800</pubDate><description><![CDATA[文章目录前言理解IOC概念BeanIOCDIBean的配置xml配置Java配置注解配置依赖注入的方式setter方式构造函数注解注入IOC源码解析参考文章：
前言
在编写java程序时，我们是自己编写不同的构造函数，控制对象的创建；但是当项目复杂后，一个对象的创建需要依赖很多对象，spring通过IOC功能将对象的创建和管理由业务代码转移到IOC容器中，从而简化编程。
理解IOC概念
Bean
Bean是一个java对象，在Spring中由IOC容器创建与管理。只要是通过注解@Component、@Ser]]></description><category></category></item><item><title><![CDATA[Spring AOP简析]]></title><link>https://blog.youkuaiyun.com/michaelhuang45/article/details/123295374</link><guid>https://blog.youkuaiyun.com/michaelhuang45/article/details/123295374</guid><author>michaelhuang45</author><pubDate>Sat, 05 Mar 2022 15:23:47 +0800</pubDate><description><![CDATA[前言
通常我们在进行开发的时候，主要编写的都是业务代码，而一些与业务没有强相关的外围事务，如日志记录、事务处理等，会在代码中大量重复出现，造成代码冗余、霰弹式修改等问题，需要实现这些功能的热插拔、在使用的时候通过简便地方式引入处理。由此，引入了AOP实现业务代码与外围功能分离。
通过AOP，可以将业务外的周边共用逻辑，比如日志、事务、权限等封装起来，然后在业务需要使用时，将这些功能和业务功能“编织”在一起。

基础知识
AOP
Aspect Oriented Programming，即面向切面编程。AOP要]]></description><category></category></item></channel></rss>