Java基础六 设计模式

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.门面设计模式,代理模式,装饰着设计模式,适配器设计模式,桥接设计模式的区别

门面模式:为调用者提供统一的调用接口调用方法吧等

代理模式:我可以实现这个功能,但是我不想实现,我把我传给其他类,让他帮我统一实现这个功能

装饰者模式:我没有这个功能,但是其他类有,我需要继承她,她帮我实现这个功能

适配器模式:我需要统一的一系例的结果,尽管现在的数据不是我要的,我需要统一包装

桥接模式:

 

5.适配器模式和工厂模式的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatrixData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值