设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
2016-11-17 18:57
337 查看
设计模式
1. 单子模式 (4种): 分类: 简单单子模式: 设构造器为私有 and 提供静态的返回对象的公有方法。
同步synchronized单子模式: 将方法或者对象(Singleton.class)进行同步处理。
内部类单子模式: 声明私有静内部类,在内部类里静态的声明对象属性。and 提供一个共有方法返回内部类属性(对象)。
volatile优化单子模式: private volatile static Singleton4 s=null; // 一,防止jvm的简化,为每个都分配空间。 注意加上 volatile 进行优化。
2. 门面模式(方法门面): 提供一个方法类 ,方法里面合成了各个不同对象的执行。起到了调用一个方法,就可以实例化多个方法。
3. 适配器模式(继承实现):分类:类适配器: 继承待适配的类 实现可提供的接口类
对象适配器: 不用继承待适配的类,直接用构造器注入的方式进行传递。实现提供的接口类。
接口适配器:适应场景(当不想实现所有接口中的方法的时候) 。实现: 利用抽象类实现接口。在用不同的类去继承抽象类,实现想要单独实现的方法
4. 工厂模式(实例化转移到一个类): 分类:简单工厂(参数):根据方法传递的参数进行返回不同的 实例化对象。
工厂方法模式(方法):根据不同的方法返回不同的实例化的对象。
抽象工厂:声明一个抽象的工厂接口,针对不同的工厂进行不同的实现。调用的时候根据不同的工厂进行不同产品的生产。
静态工厂:将方法工厂中的方法声明成静态的。调用的时候直接用类调用,不需要实例化。
5. 观察者模式(集合): 核心类 : 管理观察者类 (增加,删除,更新)。
主题类(观察者进行观察的类)[一般就继承上面的类,这样好分组]:实现主题的get 和 set
观察者类(与主题类进行关联,查看消息)。
6. 命令模式:(实现两个类之间的完全解耦) 核心类: 发送命令类(调用命令方法,内聚命令类)。
中间命令接收类(调用具体执行命令方法,内聚执行类)。
执行命令类(对应执行方法的声明)。
7. 装饰者模式:(实现同一接口):装饰类需要被动态传入被装饰类的对象,并且对其利用方法进行装饰。
注: 装饰模式跟代理模式的区别是,装饰模式必须要进行被装饰对象的传入,而代理模式是完全进行了代理。
8. 代理模式(实现同一接口):分类: 静态代理:在代理类中就直接进行实例化,进行被代理类的替换。
动态代理(实现InvocationHandler接口):动态代理其实分为【JDK代理和cglib代理】相对来说cglib动态代理比较好。
实现机制:不直接实现同一接口,需要代理的类通过invoke方法里面的参数进行实现。
代码:
public class Proxy1 implements InvocationHandler{
Object obj;
Proxy1( Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method
System.out.println("调用了:"+method.getName());
System.out.println("我先执行!");
return method.invoke(obj, args);
}
}
public class Text {
public static void main(String[] args) {
IAniaml cat=new Cat();
Proxy1 p=new Proxy1(cat);
Object o=Proxy.newProxyInstance(cat.getClass().getClassLoader(), cat.getClass().getInterfaces(), p);
IAniaml o1=(IAniaml)o;
o1.speak();
o1.ok();
}
}
1. 单子模式 (4种): 分类: 简单单子模式: 设构造器为私有 and 提供静态的返回对象的公有方法。
同步synchronized单子模式: 将方法或者对象(Singleton.class)进行同步处理。
内部类单子模式: 声明私有静内部类,在内部类里静态的声明对象属性。and 提供一个共有方法返回内部类属性(对象)。
volatile优化单子模式: private volatile static Singleton4 s=null; // 一,防止jvm的简化,为每个都分配空间。 注意加上 volatile 进行优化。
2. 门面模式(方法门面): 提供一个方法类 ,方法里面合成了各个不同对象的执行。起到了调用一个方法,就可以实例化多个方法。
3. 适配器模式(继承实现):分类:类适配器: 继承待适配的类 实现可提供的接口类
对象适配器: 不用继承待适配的类,直接用构造器注入的方式进行传递。实现提供的接口类。
接口适配器:适应场景(当不想实现所有接口中的方法的时候) 。实现: 利用抽象类实现接口。在用不同的类去继承抽象类,实现想要单独实现的方法
4. 工厂模式(实例化转移到一个类): 分类:简单工厂(参数):根据方法传递的参数进行返回不同的 实例化对象。
工厂方法模式(方法):根据不同的方法返回不同的实例化的对象。
抽象工厂:声明一个抽象的工厂接口,针对不同的工厂进行不同的实现。调用的时候根据不同的工厂进行不同产品的生产。
静态工厂:将方法工厂中的方法声明成静态的。调用的时候直接用类调用,不需要实例化。
5. 观察者模式(集合): 核心类 : 管理观察者类 (增加,删除,更新)。
主题类(观察者进行观察的类)[一般就继承上面的类,这样好分组]:实现主题的get 和 set
观察者类(与主题类进行关联,查看消息)。
6. 命令模式:(实现两个类之间的完全解耦) 核心类: 发送命令类(调用命令方法,内聚命令类)。
中间命令接收类(调用具体执行命令方法,内聚执行类)。
执行命令类(对应执行方法的声明)。
7. 装饰者模式:(实现同一接口):装饰类需要被动态传入被装饰类的对象,并且对其利用方法进行装饰。
注: 装饰模式跟代理模式的区别是,装饰模式必须要进行被装饰对象的传入,而代理模式是完全进行了代理。
8. 代理模式(实现同一接口):分类: 静态代理:在代理类中就直接进行实例化,进行被代理类的替换。
动态代理(实现InvocationHandler接口):动态代理其实分为【JDK代理和cglib代理】相对来说cglib动态代理比较好。
实现机制:不直接实现同一接口,需要代理的类通过invoke方法里面的参数进行实现。
代码:
public class Proxy1 implements InvocationHandler{
Object obj;
Proxy1( Object obj){
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method
System.out.println("调用了:"+method.getName());
System.out.println("我先执行!");
return method.invoke(obj, args);
}
}
public class Text {
public static void main(String[] args) {
IAniaml cat=new Cat();
Proxy1 p=new Proxy1(cat);
Object o=Proxy.newProxyInstance(cat.getClass().getClassLoader(), cat.getClass().getInterfaces(), p);
IAniaml o1=(IAniaml)o;
o1.speak();
o1.ok();
}
}
相关文章推荐
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)