Head First设计模式
文章平均质量分 90
基于《Head First设计模式》书籍的读书笔记,深入解析设计模式的魅力
-Hermes-
Stay hungry, Stay foolish.
展开
-
设计模式--外观模式(十二)
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 知识点的梳理: "最少知识"原则:只和你的密友谈话; 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观; 外观将客户从一个复杂的子系统中解耦; 实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行; 可以为一个子系统实现多个外观;原创 2017-08-03 20:57:31 · 568 阅读 · 0 评论 -
设计模式--单例模式(简要)(十一)
单例模式知识点梳理: 1.一个类只能产生一个对象,就是单例模式; 2.饿汉式在类一加载就创建对象;懒汉式在用的时候才去创建;推荐使用饿汉式; 一.单例设计模式概述 单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供。 如何保证类在内存中只有一个对象呢? A:把构造方法私有 B:在成员位置自己创建一个对象 C:通过一个公共的方法提供访问 二.优缺点:原创 2017-07-15 14:34:49 · 637 阅读 · 0 评论 -
设计模式--单例模式(十)
单例模式:确保一个类只有一个实例,并提供一个全局访问点; 知识点的梳理: 在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量; 确定在性能和资源上的限制之后,在选择合适的方案来实现单例,以解决多线程的问题; 如果使用多个类加载器,可能导致单例实现而产生多个实例; 为什么需要独一无二的对象? 有一些对象其实我们只需要一个,比如:线程池原创 2017-07-15 14:33:33 · 740 阅读 · 0 评论 -
设计模式--抽象工厂模式(简要)(九)
优点 客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性 缺点 需要额外的编写代码,增加了工作量 //父类 public abstract class Animal { public abstract void eat(); }原创 2017-07-10 09:16:47 · 438 阅读 · 0 评论 -
设计模式--抽象工厂模式(八)
目录:注意,此模式涉及的示例,来自于工厂模式笔记 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类; 知识点的梳理: 抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中; 抽象工厂创建相关的对象家族,而不需要依赖它们的具体类; 再回到比萨店。。。 现在我们需要确保每家加盟店使用的原料都是高质量的。现在打算建原创 2017-07-10 09:16:26 · 534 阅读 · 0 评论 -
设计模式--工厂模式(简要)(七)
优点 客户端不需要在负责对象的创建,从而明确了各个类的职责 缺点 这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护 //定义父类 public abstract class Animal { public abstract void eat(); } //定义子类原创 2017-06-25 15:28:49 · 495 阅读 · 0 评论 -
设计模式--工厂模式(六)
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类; 知识点的梳理: 在设计模式中,所谓的"实现一个接口"并"不一定"表示"写一个类,并利用implements关键字来实现某个java接口","实现一个接口"泛指"实现某个超类型(可以是类或接口)的某个方法"; 依赖倒置原则:要依赖抽象,不要依赖具体类; 几个指导方针来遵循此原则原创 2017-06-25 15:28:28 · 936 阅读 · 0 评论 -
设计模式--观察者模式(五)
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 知识点的梳理: 为了交互对象之间的松耦合设计而努力; 主题(也就是可观察者)用一个共同的接口来更新观察者; 观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细节,只知道观察者实现了观察者接口; 有多个观察者时,不可以依赖特定的通知次序; Swing大量使用原创 2017-06-09 22:53:06 · 996 阅读 · 0 评论 -
设计模式--适配器模式(简要)(四)
优点 让本来不适合使用的接口变得适合使用 缺点 一次只能适配一个类,使用有一定的局限性 /* * 针对用户操作的四种功能,增删改查 */ public interface UserDao { public abstract void add(); public abstract void delete(); publ原创 2017-06-05 09:22:52 · 461 阅读 · 0 评论 -
设计模式--适配器模式(三)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间; 知识点的梳理: 当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器; 适配器改变接口以符合客户的期望; 实现一个适配器花费的时间取决于目标接口的大小与复杂程度; 适配器有两种形式:对象适配器和类适配器;类适配器需要多重继承; 适配器将一个对象包装起来以改变其接口原创 2017-06-05 09:22:28 · 765 阅读 · 0 评论 -
Java设计模式透析--装饰者模式(二)
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案; 知识点的梳理: 装饰者模式符合开闭原则! 继承属于扩展形式之一,但不见得是达到弹性设计的最佳方式; 在我们的设计中,应该允许行为可以被扩展,而无须修改现在的代码; 组合和委托可用于在运行时动态地加上新的行为; 除了继承,装饰者模式也可以让我们扩展行为; 装饰者模式意味着一群装饰者类,这原创 2017-05-28 09:24:13 · 769 阅读 · 0 评论 -
Java设计模式透析--策略模式(一)
策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 知识点的梳理: 为了"复用"目的而使用继承,结局并不完美! 找出应用中可能需要变化的地方,把它们独立出来,不要和那些不需要变化的代码混在一起; 针对接口编程,而不是针对实现编程; 多用组合,少用继承; 模拟鸭子应用 示例:公司开发了一套模拟鸭子游戏Sim原创 2017-05-15 09:06:48 · 527 阅读 · 0 评论 -
Java设计模式总览(一)
知识点的梳理: 让设计模式自然而然地出现在你的设计中,而不是为了使用而使用; 设计模式并非僵化的教条:可以根据自己的需要采用或调整; 总是使用满足需要的最简单解决方案,不管它用不用模式; 什么是模式? 模式:在某情境(Context)下,针对某问题的某种解决方案; 情境:就是应用某个模式的情况。这应该是不断出现的情况。(例如:你拥有一个对象的集合); 问题:就原创 2017-06-05 09:19:49 · 551 阅读 · 0 评论