栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

给刚想学习设计模式的道友一些思路

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

给刚想学习设计模式的道友一些思路

废话不多说,先看设计模式的本质,设计模式是干什么的 :

1.设计模式就是程序员在日常开发中总结出来的经验,形成一种设计,这种设计被称之为设计模式

2.模式:是在某情境下,针对某种问题的某种解决方案

3.如果你发现自己处于某个情境下,面对着所想达到的目标被一群约束影响着的问题,然而,你能够应用某个设计,克服这些约束并达到该目标,将你领向某个解决方案

我们用单例设计模式来入手
第二点某情境下:比如我在X类中有一个方法setTxet(String str) 和getText(), 我的需求是,在任何情境下,都要保证 getText获取到的testStr是setTestStr中设置的

那么我们分析这种场景,应该怎么做到, 当然就是 X 的实例保证一致就行了

这个在实际操作中肯定是挺麻烦的事情,那么想出一个解决的方法,就是做一个每次获取的都是同一个x 实例的方法,单例就应运而生

那么我们怎么手鲁单例模式呢,重点来了
分析: 找出单例模式的本质,再强调一遍,找出单例模式的本质, 单例模式的本质是啥? 就是每次获取的实例都是同一个实例 (X x 每次获取到的x 都是一个东西) ,知道了本质这样不就好办了吗 ,手鲁单例模式

    private static X x;

    //在X类中新建一个方法  获取单例 
    public X getSingleton() {

        if (x == null) {
            x = new X();
        }
        return x;
    }

x 实例存在,直接返回;x 不存在,就新建, 加上static,这不就是单例了吗,设计模式还是挺好鲁的,你们可能会说这个效率不高什么的,这里给你们一个手鲁单例的思路,你们在网上查到的单例是不是很蒙,这么复杂,其实来来去去无非就是提高性能,线程安全方面的考虑
比如考虑到线程安全,加把锁 synchronized

    //在X类中新建一个方法  获取单例
    public synchronized X getSingleton() {

        if (x == null) {
            x = new X();
        }
        return x;
    }

线程安全了,想提高性能,优化一下,接下来就有一波根据系统特性,java 特性等等的单例模式出现 ,无非就是这样

根据找出设计模式的本质来看看代理模式,代理模式的本质是啥?

现实场景中相似的有,比如A是一个生产纸巾的厂家,A要把纸巾卖出去,它想到的就是找直播小姐姐帮忙(找到B和C)帮它卖纸巾,B和C代理了A纸巾产品,这就是代理模式了

本质就是 A 是厂家要卖产品, 找到了B和C帮A卖,B和C找到单就让A去实现卖的过程,比如包装好寄出去等

代码实现就是 A 有一个sell()方法,B 和 C代理了A,就是拿到sell()方法

public class A {
    
    public void sell(){

    }
}
public class B {

    
    public void sell(){
        new A().sell();
    }
}
public class C {

    
    public void sell(){
        new A().sell();
    }
    
    
}

上面这种也是一种代理模式,看清了本质,再写实现代码就相当容易,也不觉得设计模式有多难,本质本质

再来一个代理模式的例子,深入理解,当然还是看本质,网上的demo有点复杂,看了我上面的,看下面这个应该就能看懂

比如上网, 客户要连接网络,代理商们想实现各种不同的收费方式,移动公司只提供了一个上网功能,其它各种方式,要代理商自己根据自己的需求定制,看图


实际的上网服务是Real , Proxy 代理了Real 的上网方法,然后自己在上网中添加了检查用户合法的功能,当然还可以有其它操作,比如收费多少,客户是不是VIP等等 符合要求才允许上网

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号