- 博客(6)
- 收藏
- 关注
原创 设计模式(四)
4.4 代理模式为其他对象提供一种代理以控制对这个对象的访问。使用场景:远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。(浏览器打开html网页,里面有很多的文字以及图片,文字是可见的,图片则是一张一张下载后才能看到的,未打开的图片框,就是通过虚拟代理来代替了真实的图片,代理存储了图片的路劲以及尺寸)。安全代理:用来控制真实对象访问时的权限。智能指引:当调用真实的对象
2022-05-11 22:46:20
58
原创 设计模式(三)
4.2 工厂模式它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式 分为简单工厂、工厂方法、抽象工厂模式。创造一个工厂,通过该工厂来实例化需要的实例,如:在设计整个计算器时,会创建+,-,*,/各个运算类,当使用加法时,将“+”传给工厂有工厂实例化加法类,完成加法。public class Test { public static v...
2022-05-11 22:41:18
101
原创 设计模式(二)
4 设计模式4.1 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的方法就是,让类自己负责保存自己的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。//饿汉式/*是否 Lazy 初始化:否是否多线程安全:是实现难度:易描述:这种方式比较常用,但容易产生垃圾对象。优点:没有加锁,执行效率会提高。缺点:类加载时就初始化,浪费内存。它基于 classload
2022-05-11 22:36:03
96
原创 数组A中给定可以使用的1~9的数,返回由A数组中的元素组成的小于n的最大数。例如A={1, 2, 4, 9},x=2533,返回2499
public static void main(String[] args) { int[] nums = {2,4,9}; int res = MaxNumberLessThanN(nums, 2215); System.out.println(res); } public static int MaxNumberLessThanN(int[] nums, int x) { if (nums == null || nums.
2022-05-10 16:34:18
485
原创 设计模式(一)
1 设计模式概念所谓设计模式,就是对经常出现的软件设计问题的成熟解决方案。实际上设计模式仅仅是对特定问题的一种惯性思维。2 设计模式目的编写软件的过程中,程序员面临着来自耦合性、内聚性以及可维护性、可扩展性、重用性、灵活性等多方面的挑战,设计模式是为了让程序拥有更好的: 代码可重用性。相同功能的代码,不用多次编写; 可读性。便于其他程序员的阅读和理解; 可扩展性。当需要增加新功能时,非常方便; 可靠性。当增加新的功能后,对原来的...
2022-05-09 20:52:37
324
原创 AQS( AbstractQueuedSynchronizer )
AQS锁框架AQS是一个锁框架,它定义了锁的实现机制,并开放出扩展的地方,让子类实现,许多同步类的实现都离不开它,如ReentrantLock/Semaphore/CountDownLatch等。public class ReentrantLock implements Lock, java.io.Serializable { private static final long serialVersionUID = 7373984872572414699L; /** Synchro...
2022-04-28 15:00:00
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人