1.常见的设计模式以及分类
1.生产型
1.单例模式,2.工厂模式,3.原型模式, 4.
2.行为型
1.适配器模式,2.策略模式,3.装饰着模式,4.适配器模式,5.桥接模式,6.代理模式,7.观察者模式
3.结构型
1.门面模式,2.
2.单例设计模式的类别
1.懒汉模式
public class MyUtils{
public static volatile MyUtils mInstance= new MyUtils();
private MyUtils(){}
}
2.饿汉模式
public class MyUtils{
public static volatile MyUtils mInstance = null;
private MyUtils(){}
public static synchronized MyUtils getInstance(){mInstance = new MyUtils();}
}
3.双重检测模式
public class MyUtils{
public static MyUtils myUtils = null;
private MyUtils(){}
public MyUtils getInstance(){
if(null == myUtils){
synchronized(MyUtils.class){
if(null == myUtils){
myUtils = new MyUtils();
}
}
}
return myUtils;
}
}
4.静态内部类
public class MyUtils{
private MyUtils(){}
public static MyUtils getInstance(){
return new MyInner().myUtils;
}
public class MyInner{
public static final MyUtils myUtils = new MyUtils();
}
}
5.枚举模式
6.集合模式
3.代理模式的实现和类别
1.静态代理
实现比较死,需要先定义接口,再被代理类需要继承接口,通过代理类去调用方法
public interface PayGameInterface{
void payGame();
}
public class PayBasketball implement PayGameInterface{
override
public void payGame(){
System.out.print("pay basketball");
}
}
public class PayGameImp{
PayGameInterface payGameInterface;
public void setPayGame(PayGameInterface payGame){
this. payGameInterface = payGame;
}
public void pay(){
payGameInterface.payGame();
}
}
public void mian(){
PayBasketball payBasketball = new PayBasketball();
PayGameImp payGameImp = new PayGameImp();
payGameImp.setPayGame(payBasketball);
payGameImp.pay();
}
2.动态代理
实现灵活,需要Java提供的动态代理类实现功能
3.运用场景
retrofit,
4.门面设计模式,代理模式,装饰着设计模式,适配器设计模式,桥接设计模式的区别
门面模式:为调用者提供统一的调用接口调用方法吧等
代理模式:我可以实现这个功能,但是我不想实现,我把我传给其他类,让他帮我统一实现这个功能
装饰者模式:我没有这个功能,但是其他类有,我需要继承她,她帮我实现这个功能
适配器模式:我需要统一的一系例的结果,尽管现在的数据不是我要的,我需要统一包装
桥接模式: