![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java语言
文章平均质量分 87
我是松哥
软件技术人员
展开
-
设计模式 - 桥接模式(Bridge)
Bridge模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。Bridge模式创建了两个分离的类层次,目的就是允许分离的类层次一起工作,即使它们是独立演化的。类图: 示例:绘制一个圆(Circle),可以是红色的或绿色的public interface DrawImp { public void drawCircle(int radius, int x, int y);}publi原创 2017-04-02 20:02:21 · 885 阅读 · 0 评论 -
设计模式 - 模板方法模式(Template Method)
Template Method模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 • 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 • 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。按照Template Method模式提炼方法来重构代码,是实现很多其它模原创 2017-04-04 22:22:29 · 657 阅读 · 0 评论 -
设计模式 - 策略模式(Strategy)
Strategy模式定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。类图: 案例: 不同的员工薪资计算不同。 没有实现Strategy模式的例子:public class Employee { public static final int ENGINEER = 0; public static final int SAL原创 2017-04-04 21:49:04 · 522 阅读 · 0 评论 -
规格模式(Specification)
规格(Specification)即类/对象的属性,比如产品的颜色、尺寸和价格,如果业务规则的变化和组合很多,而且和规格相关,包括很多的条件判断,那么适合将这些业务规则放到专门的规格对象中,这就是规格模式。规模模式有三种形式:用于验证,验证一个对象的状态是否符合要求。 用于筛选过滤,从一个集合中筛选出符合指定要求的对象。Java 8可以stream 的filter方法实现。 按需创建指定规格的产品。案例:根据颜色、尺寸、价格等规格筛选出指定规格的产品。下面的代码设计Builder, Fac原创 2022-03-16 20:15:25 · 4311 阅读 · 0 评论 -
设计模式 - 生成器模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类图: B u i l d e r对象提供给导向器(Director)一个构造产品的抽象接口; 每个具体生成器C o n c r e t e B u i l d e r包含了创建和装配一个特定产品的所有代码;改变该产品的内部表示时所要做的只是定义一个新的生成器。案例1: KFC套餐A: 一份汉堡,一份鸡翅,一份饮原创 2017-04-02 15:08:51 · 1184 阅读 · 0 评论 -
Java内存结构和Java内存泄漏
Java内存结构方法区:存放要加载的类的信息(名称,修饰符等)、类中的静态变量、类中final类型的常量、类中Field和Method信息。通过Class对象的方法访问的信息来源于方法区。方法区是全局共享的。 堆(Heap):存储对象实例和数组。 **本地方法栈:**native方法调用的信息。 PC寄存器 JVM方法栈(Stack): 存储基本数据类型 byte short int lon原创 2017-05-16 09:28:58 · 268 阅读 · 0 评论 -
equals方法 和 hashCode方法
Object 类有equals方法和hashCode方法, 定义如下: boolean java.lang.Object.equals(Object obj) //注意参数变量类型是Object. public native int hashCode();两个对象等同,通常指==相等。 如果对象存在”逻辑相等”,而且超类没有重写(override) equals方法以实现逻辑相等,则需要重写原创 2017-05-15 15:38:12 · 319 阅读 · 0 评论 -
Java多线程 - 生产者和消费者模式
Java多线程之生产者(Producer)和消费者(Consumer)模式:示例1:public class Resource { private int i = 0; private int limit; public Resource(int limit) { this.limit = limit; } public synchronized原创 2017-05-13 11:44:44 · 219 阅读 · 0 评论 -
Java语言 - 泛型(Generic)
Java 5 引入了泛型(Generic), 使用泛型可以带来如下好处:代码重用不须强制类型转换 (使用类型参数type parameter)List<String> list = new ArrayList<>();//类型参数是StringString element = list.get(0);//不须类型转换一. 可以定义一个或多个类型参数的泛型类public class Pair<原创 2017-04-21 16:45:10 · 226 阅读 · 0 评论 -
Java语言 - 枚举类型(enum)
Java 5增加了一个新的类称作枚举类型(enum type),由一组固定的常量组成合法值的类型,每个常量是这个枚举类型的实例。 例如:public enum Size { SMALL,MEDIUM,LARGE, EXTRA_LARGE}Java的枚举本质上是int值,所以两个枚举类型的值的比较,可以直接使用==。在没有引入枚举类型之前,通常用一组int常量, 每个成员是一个常量,这种方原创 2017-04-21 08:44:06 · 395 阅读 · 0 评论 -
Java语言 - 嵌套类(nested class)
嵌套类(nested class)指被定义在一个类的内部的类。 嵌套类有四种:静态成员类 非静态成员类 局部类 匿名类除了静态成员类外的三种又被称为内部类。 嵌套类存在的目的是为外围类(enclosing class)提供服务。通常基于下列原因使用嵌套类。内部类的方法可以访问 外围类的的数据包括私有数据。内部类可以对同一包中的其他类隐藏起来。使用匿名内部类可以定义一个代码简洁的回原创 2017-04-19 21:36:23 · 435 阅读 · 0 评论 -
Java 8 - Lambda表达式
本篇来自于 State of Lambda by Brian GoetzJava 8 包括的首要的语言新特性有: Lambda 表达式 (非正式式的称为”闭包”或”匿名方法”)方法和构造器引用扩展的目标类型和类型推导接口中缺省的(default) 和静态的(static)方法一. 背景。 Java面向对象编程,有些对象仅仅只有一个方法,典型的情况是 一个Java API定义了一个接原创 2017-04-16 22:12:43 · 322 阅读 · 0 评论 -
Java 8 - Lambda表达式: 类库Streams & Collections
Java 8新增的类库(Streams, new Collections)利用新语言特性, 首要的如 lambda 表达式和缺省方法。原创 2017-04-18 20:52:05 · 312 阅读 · 0 评论