设计模式
文章平均质量分 83
Arvon_阿文
跋山涉水
展开
-
设计模式:单例模式的三种创建方式及其各自的优缺点
单例模式:确保一个类只有一个实例,并提供全局访问点。在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量。确定在性能和资源上的限制,如何选择适当的方案来实现单例,以解决多线程的问题。如果使用多个类加载器,可能导致单例失效产生多个实例。双重检查加锁不适用于1.4及更早版本的java。方式1:package singleton;/** * 同步getIn原创 2015-08-24 15:22:00 · 1461 阅读 · 0 评论 -
JDK动态代理的一个例子
1.目标类接口package com.arvon.jdkproxy;/** * 目标类接口 * 目标类和动态生成的代理对象都实现的接口 *@author Huangwen *2017-3-29 */public interface ITargetClass { /** * 主业务逻辑方法 */ public void mainLogicMethod();原创 2017-03-29 10:11:57 · 1078 阅读 · 0 评论 -
设计模式: 自己手动写一个状态模式
状态模式: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。状态模式将状态封装成独立的类,并将动作委托到代表当前状态的对象。状态模式使用组合通过简单引用不同的状态对象来造成类改变的假象。状态模式和策略模式有相同的类图,但它们的意图不同,策略模式会用行为和算法来配置Context类。状态模式允许Context随着状态的改变而改变其行为。源代码:package s原创 2015-09-01 09:11:16 · 881 阅读 · 1 评论 -
设计模式: 自己手动写一个代理模式
代理模式:为另一个对象提供一个替身或占位符以访问这个对象。代理模式为另一个对象提供代表,以便控制客户对对象的访问,管理访问的方式有许多种。远程代理管理客户和远程对象之间的交互。虚拟代理控制访问实例化开销大的对象。保护代理基于调用者控制对对象方法的访问。代理模式有许多变体,例如:缓存代理、同步代理、防火墙代理、写入时复制代理。Java内置的代理支持,可以根据需要动态创建代理,并将原创 2015-08-27 14:00:31 · 1344 阅读 · 0 评论 -
设计模式: 自己手动写一适配器和外观模式
适配器模式: 将一个类的接口,转换成客户所期待的接口,适配器让原本不兼容的类可以合作无间。有两种形式:类适配器和对象适配器。前者需要用到多重继承(java不支持),后者要用到组合。外观模式: 提供了一个统一的简化的接口,用来访问子系统里的一群接口。外观定义了一个高层接口,让子系统更容易使用。适配器的类图适配器的一个简单源码:package adapter;原创 2015-08-26 10:20:03 · 727 阅读 · 0 评论 -
设计模式: 自己手动写一个命令模式
.命令模式: 将“请求”封装成对象,以便使用不同的请求、队列、日志来参数化其他对象。命令模式也支持可撤销的操作。 命令对象将动作和接收者(当作的执行者)包进对象中。这个对象之暴露一个execute()方法. 命令也可以用来实现日志和事务系统。宏命令是命令的一种简单延伸,允许调用多个命令。下面是命令模式的一个类图:一个案例的源代码如下:package com原创 2015-08-26 14:26:49 · 746 阅读 · 0 评论 -
设计模式: 自己手动写一个装饰者模式
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供l比继承更有弹性的替代方案。装饰者和被装饰者有相同的超类型,你可以用一个或多个装饰者包装一个对象。既然装饰者和被装饰者有相同的超类型,所以在任何需要原始对象(被装饰者)的场合,可以用装饰过的对象替换它。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,已达到特定的目的。对象可以在任何时候被装饰,所以可以在运行时动态地、不原创 2015-08-25 15:34:53 · 831 阅读 · 0 评论 -
设计模式: 自己手动写一个工厂模式(整合工厂方法模式和抽象工厂模式)
工厂模式: 所有工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定该创建的对象是什么,来达到将对象的创建过程封装的目的。工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式提供一个接口,用来创建相关或依赖对象的家族,而不需要明确指定具体类。工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。原创 2015-08-25 10:18:51 · 1061 阅读 · 0 评论 -
设计模式: 自己手动实现一个观察者设计模式
观察者模式: 定义了对象之间的一对多依赖,这样一来,当一个对象(被观察者)改变状态时,它的所有依赖者(观察者)都会收到通知并自动更新。在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。用这个模式, 你可以改变依赖主题状态的对象,却不必改变主题,这叫提前规划。主题和观察者都使用接口:观察者利用主题的接口向主题注册,而主题利用观察者的接口通知观察者。这样可以让两者之间运作正常,有同原创 2015-08-24 09:43:56 · 808 阅读 · 0 评论 -
设计模式: 策略模式的实现
1. 策略模式:定义了算法族,分别封装起来,让它们之间可以替换,此模式让算法的变化独立于使用该算法的用户。(利用组合)类图如下: 源代码如下:package Strategy;/** * 鸭子超类 * @author Arvon * */public abstract class Duck { public Duck() { su原创 2015-08-24 16:43:39 · 589 阅读 · 0 评论 -
cglib动态代理例子和浅剖Spring Aop机制
1.cglib动态代理例子 要导入cglib的jar包package com.arvon.cglibproxydemo;/** * 目标类 *@author Huangwen *2017-3-30 */public class Target { public void mainLogicMethod(){ System.out.println("Target.ma原创 2017-03-30 09:58:16 · 429 阅读 · 0 评论