设计模式
会写代码的劫
厚积薄发,一个小小的码农
展开
-
Cglib包实现动态代理
Cglib代理模式基本介绍:Cglib代理也叫子类代理,它是在内存中构建一个子类对象并对其目标方法进行拦截从而实现对目标对象功能扩展。使用Cglib代理需要引入Cglib jar包,Cglib包的底层是通过字节码处理框架ASM来转换字节码并生成新的类。1)首先导入cglib jar包2)注意,cglib代理的目标对象里要被增强的方法不能是static或者final的,如果是static或者final的则不会被拦截到,因为cglib是通过继承目标类实现方法增强,而static或者final的方法是不能原创 2020-05-24 16:31:50 · 1041 阅读 · 0 评论 -
静态代理和动态代理
1.静态代理基本介绍:静态代理,需要定义接口或父类,代理对象和被代理对象实现相同接口或者是继承相同父类,像之前博文中写的代理模式就是静态代理 静态代理例子2.动态代理的基本介绍:代理对象不需要实现接口,但是被代理对象要实现接口,否则不能使用动态代理代理对象的生成,是利用JDK的api,动态的在内存中构建代理对象动态代理也叫做:JDK代理、接口代理JDK的动态代理依靠反射来实现,代理类和被代理类不需要实现同一个接口。被代理类需要实现接口,否则无法创建动态代理。代理类在JVM运行时动态生原创 2020-05-22 16:28:04 · 186 阅读 · 0 评论 -
设计模式:代理模式
以下是从java设计模式刘伟一书总结:代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。代理模式定义如下:代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。Proxy Pattern: Pro原创 2020-05-22 12:25:48 · 279 阅读 · 0 评论 -
设计模式:装饰者模式
装饰模式定义如下:装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。在装饰模式中,为了让系统具有更好的灵活性和可扩展性,我们通常会定义一个抽象装饰类,而将具体的装饰类作为它的子类,装饰模式结构如图所示:在装饰模式结构图中包含如下几个角色:● Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的原创 2020-05-18 14:42:50 · 108 阅读 · 0 评论 -
设计模式:适配器模式
在适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类。适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法,而这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器让那些由于接口不兼容而不能交互的类可以一起工作。适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装原创 2020-05-15 17:12:24 · 241 阅读 · 0 评论 -
设计模式:建造者模式
在建造者模式结构图中包含如下几个角色:● Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是buildPartX(),它们用于创建复杂对象的各个部件;另一类方法是getResult(),它们用于返回复杂对象。Builder既可以是抽象类,也可以是接口。●ConcreteBuilder(具体建造者):它实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对原创 2020-05-13 15:00:23 · 135 阅读 · 0 评论 -
设计模式:原型模式
原型模式的工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。由于在软件系统中我们经常会遇到需要创建多个相同或者相似对象的情况,因此原型模式在真实开发中的使用频率还是非常高的。原型模式是一种“另类”的创建型模式,创建克隆对象的工厂就是原型类自身,工厂方法由克隆方法来实现。需要注意的是通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的。通过不同原创 2020-05-11 16:12:10 · 196 阅读 · 0 评论 -
设计模式:单例模式的实现
单例模式定义如下: 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式有三个要点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式结构图中只包含一个单例角色:● Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;为了原创 2020-05-09 19:16:49 · 264 阅读 · 0 评论 -
设计模式:工厂三兄弟的实现
//抽象图表接口:抽象产品类interface Chart { public void display(); }//饼状图类:具体产品类class PieChart implements Chart { public PieChart() { System.out.println("创建饼状图!"); } public void ...原创 2020-05-07 19:57:52 · 140 阅读 · 0 评论 -
设计模式:面向对象设计原则
单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则。开闭原则是面向对象的可复用设计的第一块基石,它...原创 2020-05-07 16:01:59 · 131 阅读 · 0 评论