12 2016 档案

摘要:【享元模式】 享元模式是池技术的重要实现方式。 享元模式使用共享对象有效地支持大量细粒度的对象。 享元模式两个要求:细粒度对象和共享对象。在平时写java程序过程中,分配太多的对象到应用程序中将有损程序的心梗,同事还容易造成内存溢出,避免的方式之一就是采用享元模式的共享技术。 要求细粒度对象,那么不 阅读全文
posted @ 2016-12-28 16:28 HigginCui 阅读(266) 评论(0) 推荐(0)
摘要:【门面模式】 也称为 外观模式。 要求一个子系统的外部与内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生。(即领导想了解项目完成的情况,只能通过项目经理 阅读全文
posted @ 2016-12-28 14:35 HigginCui 阅读(184) 评论(0) 推荐(0)
摘要:【责任链模式】 也称为职责链模式。 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式的重点是在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果。 【责任链模式 例子 阅读全文
posted @ 2016-12-27 20:51 HigginCui 阅读(197) 评论(0) 推荐(0)
摘要:【观察者模式】 也叫作发布/订阅模式,使用较为频繁。 定义了对象间一种一对多的依赖关系,当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成: * Subject 被观察者 定义被观察者必须实现的职责,他必须能够动态地增阿基、取消观察者。一般是抽象类或实 阅读全文
posted @ 2016-12-27 14:20 HigginCui 阅读(278) 评论(0) 推荐(0)
摘要:【状态模式】 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来好像这个对象对应的类发生了改变一样。 状态模式的UML类图与策略模式一样。状态模式也由三部分组成: * 抽象状态角色 State 接口或抽象类,负责对象状 阅读全文
posted @ 2016-12-26 21:29 HigginCui 阅读(864) 评论(0) 推荐(0)
摘要:【策略模式】 也称为政策模式。 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式由三部分组成: * Strategy抽象策略角色(例子中的Soldier接口) 策略、算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法或属性。 * ConcreteStrategy具体策 阅读全文
posted @ 2016-12-26 16:50 HigginCui 阅读(254) 评论(0) 推荐(0)
摘要:【命令模式】 命令模式是一个高内聚的模式。 将一个请求封装成一个对象,从而让你使用不用的请求将客户端参数化,对请求排队或者记录请求日志,提供命令的撤销和恢复功能。 命令模式由以下4部分组成: 1.Receiver接受者角色 该角色是具体做事的角色,命令传递到这里被执行。 2.Command抽象命令角 阅读全文
posted @ 2016-12-26 15:00 HigginCui 阅读(196) 评论(0) 推荐(0)
摘要:【适配器模式】 又称为变压器模式,也叫作包装模式,但是包装模式也包括了装饰模式。 适配器模式是将一个类的接口编程客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式中有三个角色: 1.Target目标角色(IPhone手机类) 该角色定义把其他类转换为 阅读全文
posted @ 2016-12-23 14:52 HigginCui 阅读(183) 评论(0) 推荐(0)
摘要:【装饰者模式】 动态的给一个对象的添加一些额外的职责,就增加功能而言,装饰模式比直接继承的子类会更加灵活。 装饰模式由4部分组成 1.Component抽象构件(ISoldier接口) 2.ConcreteComponent具体构件(Soldier类) 3.Decorator装饰者类(Abstrac 阅读全文
posted @ 2016-12-22 15:22 HigginCui 阅读(199) 评论(0) 推荐(0)
摘要:【新闻】 美国一家基础设施公司的安全审计发现,该公司的一位顶尖程序员将自己的工作外包给中国沈阳的一家软件公司。该公司为雇员提供了VPN允许他们在家里工作。内部的安全审计发现,公司明星程序员Bob的VPN登陆日志显示他固定的从中国沈阳访问公司主服务器,他们找来电信设备供应商Verizon帮助调查。调查 阅读全文
posted @ 2016-12-21 16:40 HigginCui 阅读(346) 评论(0) 推荐(0)
摘要:【建造者模式】 又称为生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式中,主要有4个角色: 1.Product产品类(例子中的Computer类) 表示被构建的复杂对象(通常是实现了模板方法模式)。 2.Builder抽象建造者类(例子中的Build 阅读全文
posted @ 2016-12-21 14:50 HigginCui 阅读(225) 评论(0) 推荐(0)
摘要:【模板方法】 定义一个操作中的算法框架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 【模板方法的抽象类中主要包含两部分】 [ 基本方法 ] 也称为基本操作,是由子类来实现的方法,并在模板方法中被调用。 [ 模板方法 ] 可以有一个或几个,一般是一个具体的 阅读全文
posted @ 2016-12-21 10:16 HigginCui 阅读(281) 评论(0) 推荐(0)
摘要:【抽象工厂模式自己想的思路】 假设一个村庄生产两种水果:苹果和芒果,某年由于滞销导致村里积累了大量苹果和芒果,为了利用起来这些水果,村里要建设两种工厂,分别是果汁加工厂和果干加工厂,在这两个加工厂中,果汁加工厂可以生产苹果汁和芒果汁,果干加工厂可以生产苹果干和芒果干,这里就涉及了我们的抽象工厂模式。 阅读全文
posted @ 2016-12-20 20:38 HigginCui 阅读(264) 评论(0) 推荐(0)
摘要:【简单工厂模式】 简单工厂模式,又称为静态工厂模式,是工厂方法模式的扩展,其与工厂方法模式的主要区别在于工厂类,简单工厂模式的工厂类特点: 1.去掉了抽象工厂类,直接在具体工程类MiPhoneFactory中添加createMiPhone()方法。 2.把createMiPhone方法修改为stat 阅读全文
posted @ 2016-12-20 16:12 HigginCui 阅读(275) 评论(0) 推荐(0)
摘要:【工厂方法模式】 定义一个用于创建对象的接口(或抽象类),让子类决定去实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 【具体案例:小米手机工厂】 【运行结果】 【优点】 * 良好的封装性,代码接口清晰。一个对象的创建是有条件约束的,如一个调用者需要一个具体的产品对象(new Mi3()),只 阅读全文
posted @ 2016-12-20 11:23 HigginCui 阅读(315) 评论(0) 推荐(0)
摘要:【单例模式定义】 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 【关键点】 1.定义一个private访问权限的构造方法,避免被其它类new出一个对象。 2.自己可以new出一个对象,其他类可以通过getInstance()方法获得同一个对象。 【优点】 1.由于单例模式在内存 阅读全文
posted @ 2016-12-19 10:23 HigginCui 阅读(254) 评论(0) 推荐(0)
摘要:【六大原则总览】 1.单一职责原则 2.里氏替换原则 3.依赖导致原则 4.接口隔离原则 5.迪米特法则 6.开闭原则 【原则一:单一职责原则】 英文全称:Single Responsibility Principle,简称SRP。 要求一个接口或类只有一个原因引起变化,就是一个接口或类只有一个原则 阅读全文
posted @ 2016-12-18 19:45 HigginCui 阅读(765) 评论(0) 推荐(0)
摘要:【死锁例子】 【运行结果】 【分析】 创建两个线程"筷子线程"和"刀叉线程",flag值分别为true和false,分别执行run方法中的if和else的代码块,注意chopstick和knifefork对象锁都是静态变量,所以两个线程中的static变量时一致的。当筷子线程拥有chopsticks 阅读全文
posted @ 2016-12-06 10:49 HigginCui 阅读(338) 评论(0) 推荐(0)
摘要:【线程安全问题例子】 模拟售票案例,4个窗口售票,总共100张票。 【运行结果】 【分析】 当只剩下一张票时,某个线程判断满足while(tickets>0)进入循环,然后休眠10ms,此时其它线程在这10ms内依次进入判断while(tickets>0),然后都休眠10ms,最后大家都执行最后的S 阅读全文
posted @ 2016-12-06 09:30 HigginCui 阅读(437) 评论(0) 推荐(0)
摘要:【使用forEach()结合Lambda表达式遍历集合】 【关于forEach(Consumer action)方法】 Java8为Iterable接口新增了一个forEach(Consumer action)默认方法,该方法的参数类型Consumer是一个函数式接口,而Iterable接口是Col 阅读全文
posted @ 2016-12-01 16:59 HigginCui 阅读(1251) 评论(0) 推荐(0)
摘要:【简述】 Lambda表达式是匿名内部类的一种简化,因此它可以取代匿名内部类的作用。 【Lambda表达式与匿名内部类的 相同点】 1.Lambda表达式和匿名内部类一样,都可以直接访问"effectively final"的局部变量,以及外部类的成员变量(包括实力变量和类变量) 2.Lambda表 阅读全文
posted @ 2016-12-01 16:31 HigginCui 阅读(3385) 评论(1) 推荐(0)
摘要:【Lambda表达式概述】 Lambda表达式支持将代码块作为方法参数,Lambda表达式允许将使用简洁的代码来创建只有一个抽象方法的接口的实例。(这种接口称为函数式接口) 【入门实例】 【分析】 lambda表达式代码 与 创建匿名内部类 时需要实现的process(int[] target)方法 阅读全文
posted @ 2016-12-01 10:53 HigginCui 阅读(449) 评论(0) 推荐(0)
摘要:【匿名内部类】 匿名内部类适合创建只需要一次使用的类。创建匿名内部类时会立即创建一个该类的实例,这个类的定义立即消失,匿名内部类不能重复使用。 【定义匿名内部类的格式】 从定义中可见,匿名内部类必须继承一个父类,或实现一个接口,但最多也只能实现一个接口或继承一个父类。 【匿名内部类的两条规则】 1. 阅读全文
posted @ 2016-12-01 09:41 HigginCui 阅读(385) 评论(0) 推荐(0)