【程序人生】-- 设计模式
设计模式
木子松的猫
为了毫不费力,所以必须努力。
展开
-
【设计模式】-原则总结(二)
在上篇博客里边我们说了单一职责原则,开放封闭原则和依赖倒置原则。今天我们说说里氏替换原则、迪米特原则、接口隔离原则和合成聚合复用原则。里氏替换原则:内容可以描述为: “派生类(子类)对象能够替换其基类(超类)对象被使用。”里氏替换原则的核心精神是:在使用基类的的地方可以任意使用其子类,能保证子类完美替换基类;这一精神其实是对继承机制约束规范的体现。在父类和子类的具体实现中,严原创 2017-03-19 15:17:33 · 451 阅读 · 29 评论 -
JDK动态代理
代理一般分为三种:静态代理、JDk动态代理、CGLib动态代理;我们常说的代理模式一般只静态代理;mybatis的mapper接口主要应用JDK动态代理;Spring的AOP主要应用JDk动态代理和CGLib动态代理。本文主要介绍JDK动态代理。静态代理原理静态代理由被代理类,代理类,接口三部分组成。代理类和被代理类都需要实现接口,被代理类实现主要业务方法,代理类通过创建一个业务实现类对象来...原创 2019-04-14 19:11:38 · 286 阅读 · 1 评论 -
单例
饥饿模式:直接初始化,性能问题,如果对象很大,没有使用之前就加载到内存是一种很大的浪费public final class EagerSingleton • { • private static EagerSingleton singObj = new EagerSingleton(); • • private EagerSingleton(...原创 2018-07-22 18:11:59 · 144 阅读 · 10 评论 -
重载,重写以及多态
重写override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。3、重写的方法的返回值必须和原创 2017-12-10 21:09:46 · 507 阅读 · 6 评论 -
【设计模式】-几种关系在代码中的体现
什么是类?将某类东西归纳在一起,可以成为一个类。类有很多种提炼角度,需要根据系统地目标、业务的场景,选取合适的角度对事物进行归纳。什么是类图?类图可能是UML中使用的最多的一种图。和其他图一样,类图的基本语法并不复杂,可能一两天就能掌握,但是真正做到灵活的使用类图,可能需呀多年的功力。类图是锻炼OOA(OO Analysis)和OOD(OO Design)思想的重要工具,有转载 2017-10-10 17:18:54 · 3142 阅读 · 24 评论 -
【设计模式】-抽象工厂
抽象工厂和工厂模式的区别工厂方法模式:每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建;抽象工厂模式:每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责多个(一系列)具体产品的实例创建。工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生原创 2017-09-30 18:47:37 · 268 阅读 · 13 评论 -
【设计模式】-原型模式
定义原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。如何使用在使用原型模式时,我们需要首先创建一个原型对象,再通过复制(克隆,拷贝)这个原型对象来创建更多同类型的对象,也就是通过复制原型对象来得到更多同类型的对象。为什么使用克隆原型模式本身就是用来解决系统中需要创建一个新对象,而要创建的原创 2017-10-03 21:09:49 · 200 阅读 · 15 评论 -
【设计模式】-工厂模式
关联 在简单工厂模式中只提供一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它需要知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,需要在其中加入必要的业务逻辑,这违背了“开闭原则”。此外,在简单工厂模式中,所有的产品都由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影原创 2017-09-24 19:44:20 · 346 阅读 · 27 评论 -
【设计模式】-简单工厂
定义简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。设计流程 首先将需要创建的各种不同对原创 2017-09-19 18:44:08 · 412 阅读 · 24 评论 -
CGLib动态代理
在spring AOP中,通常会用cglib动态代理来生成AOProxy对象。cglib动态代理和JDk动态代理的不同之处在于cglib动态代理是通过继承被代理类,生成的动态代理类是被代理类的子类,然后通过重写业务方法来实现代理。1、定义被代理类public class cglibPerson { public void findLove(){ System.out....原创 2019-04-21 19:19:01 · 282 阅读 · 1 评论