![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
tripleTu
这个作者很懒,什么都没留下…
展开
-
组合模式
组合模式:合模式使得用户对单个对象和组合对象的使用具有一致性。在树形模式下,即对于叶子节点和父亲节点可以不做区分的进行处理。 如餐厅中的菜单,菜单中可能包含菜单,对于菜单的遍历问题利用组合模式将变得很简单。转载 2013-08-28 11:42:41 · 276 阅读 · 0 评论 -
工厂方法和抽象工厂
读书笔记 工厂方法:通过提供一个抽象的接口,让继承接口的子类去实现工厂方法(生产实例的方法)。 以pizza为例,定义接口PizzaStore,和工厂方法createPizza(String type) 让继承其接口的子类NYPizzaStore,自定义实现createPizza(String type),从而实现对于用户和具体商品的解耦和。 Interface Piz原创 2013-08-08 17:07:41 · 285 阅读 · 0 评论 -
观察者模式
读书笔记 观察者在观察事件中进行注册,当被观察事件发生变化时,依次通知注册的观察者,调用观察者的定义方法,实现事件的通知。 通过调用被观察者的addObserver(),deleteObserver()方法将自己注册或者从观察者列表中删除。 当被观察者发生变化时,就调用notifyObserver()方法对观察者列表中的所有观察者进行通知,调用观察者的notify方法原创 2013-08-20 15:12:37 · 313 阅读 · 0 评论 -
装饰者模式
装饰者模式 动态得将责任附加到对象上,想要扩展功能,装饰者提供有别于继承的另一种选择。 这是一个符合开放-关闭原则的模式,对扩展开放,对修改关闭。 顺带一提OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 为交互对象之间的松耦合设计而努力 对扩展开放,对修改关闭 装饰者一层一层的包装,通过委托,层层调用被包装者的方法,来实现组合的目的。 典型原创 2013-08-22 11:57:22 · 297 阅读 · 0 评论 -
单例模式
单例模式 即确保一个类只有一个实例,并提供一个全局访问点。 实现很简单,将构造函数私有,并提供静态的方法获得实例,该静态方法利用判断全局静态变量是否为null而决定是否初始化一个实例。 public class Singleton { public static Singleton model; private Singleton() { } public static原创 2013-08-22 17:41:29 · 312 阅读 · 0 评论 -
命令模式
命令模式:在请求者和响应者之间,通过传递命令实现解耦。 实例:电视遥控器,餐厅里的订单 public interface Command { public void execute(); } public class ConcreteCommand implements Command { private Receiver receiver = null; pri原创 2013-08-27 15:27:03 · 285 阅读 · 0 评论 -
享元模式flyweight
享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。 外蕴状态是随环境改变而改变的、不可以共享的状态。享元对象的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外原创 2013-08-28 10:26:31 · 339 阅读 · 0 评论 -
策略模式
策略模式 定义了一系列的算法,并将每一个算法封装起来,而且使他们可以互相替换。策略模式让算法与使用它的客户解耦。 换句话说就是:“找到变化并且把它封装起来,稍后你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分。” 尽管这个概念很简单,但是它几乎是所有设计模式的基础,所有模式都提供了使系统里变化的部分独立于其它部分的方法。 面向接口编程,而不要面向实现编程 模拟鸭子原创 2013-08-28 11:01:38 · 339 阅读 · 0 评论 -
外观模式
外观模式:为子系统中的一组接口提供一个统一的高层接口,使得子系统更加容易使用。 最典型的例子:家庭影院;你要看一部电影,需要很多步骤,如果调用者一步步的操作将会非常麻烦,这时你可以提供一个简单的看电影接口,去包装实现的细节过程。 虽然提供了简单的看电影接口,但是调用者仍可以接触到底层的接口,如打开DVD接口。原创 2013-08-28 11:17:04 · 320 阅读 · 0 评论 -
面向对象设计原则
原则1:DRY(Don’t repeat yourself) 即不要写重复的代码,而是用“abstraction”类来抽象公有的东西。如果你需要多次用到一个硬编码值,那么可以设为公共常量;如果你要 在两个以上的地方使用一个代码块,那么可以将它设为一个独立的方法。SOLID 设计原则的优点是易于维护,但要注意,不要滥用,duplicate 不是针对代码,而是针对功能。这意味着,即使用公共代转载 2013-08-28 11:20:41 · 289 阅读 · 0 评论 -
模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。转载 2013-08-28 11:26:50 · 228 阅读 · 0 评论 -
迭代器模式
迭代器模式:提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。 package com.hufei.learnDesignPattern.improve; public interface Iterator { boolean hasNext(); Object next(); } public class DinerMenuIterator implements Iter转载 2013-08-28 11:36:54 · 256 阅读 · 0 评论 -
适配器模式
读书笔记 适配器利用被适配对象构造一个继承目标对象的适配器对象,是的可以利用目标对象的接口来操作被适配的对象。 差别就是:对象适配器实现了客户端想要的接口(USB),在内部有一个被适配对象(PS2)的引用,通过组合实现适配功能。类适配器实现了客户端想要的接口(USB)和被适配对象接口(PS2),通过继承来实现适配功能。package com.zzy.adapter; /** * 类原创 2013-08-27 15:21:26 · 281 阅读 · 0 评论