乘风破浪-博客

设计模式之适配器模式

###适配器模式的作用 适配器模式使得原来由于接口不兼容而不能一起工作的哪些类可以在一起工作。 ###适配器中的角色: - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 - 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换为目标接口 - 待适配对象(Adaptee):需要适配的类或适配者类 ###快速理解运用 举例:使用电脑...
阅读全文

设计模式之装饰模式

###问题的引出 人们日常生活中所使用的手机是不断迭代的、不断产生新功能的。初代的座机,只能打电话。如今手机经过了发展,又产生了很多功能,如听音乐、看视频等。 将手机当做一个产品类,如果我们要实现这一模型的话,若采用一般继承的方式来构造的话,无疑会产生很多类。如下: ```prettyprint interface ITelephone{ void use(); } class Teleph...
阅读全文

设计模式之工厂方法模式

使用工厂模式创建对象时,我们不需要对客户端暴露创建逻辑,只需要通过一个共同的接口(工厂)来创建即可,从而使得代码简洁易懂。 工厂方法模式中有以下几个元素: - 产品:要创建的对象 - 工厂:用于创建产品的媒介 在介绍工厂方法模式之前,先介绍一下简单工厂 简单工厂的实现十分简单: 1. 共同的产品接口 2. 产品类实现产品接口 3. 提供工厂类,用于创建不同的产品 以生产汽...
阅读全文

简单模拟Java中的ArrayList

Java中的ArrayList是用数组实现的。 数组是有界的,因此实现最重要的是数组的扩容机制。 扩容机制: > 当要存的数据大于数组大小时,会扩容。 在JDK1.8中,会创建一个新数组,新数组大小为原数组的1.5倍,并将原数组复制到该新数组中。 可以发现,扩容过程会消耗大量的时间、空间,应当尽量避免数组扩容。因此在创建ArrayList时,确定一个合适的初始数组大小是很有必要的。 ---...
阅读全文

设计模式之动态代理

动态代理和静态代理同属于代理模式。所不同的是,在Java中,动态代理的代理者对象是由Jdk给我们提供的。 以上次租房为案例,真实角色和共同接口如下: ```prettyprint // 共同的接口 interface Rent{ abstract void rentHouse(); } // 真实对象 class Person implements Rent{ @Override publ...
阅读全文