随笔分类 - 设计模式
摘要:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃的餐厅午餐了。但是,好像有一点小麻烦: 新的餐厅想用煎饼屋菜单当作早餐的菜单,使用餐厅的菜单当做午餐
阅读全文
摘要:模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 有些人没有咖啡就活不下去;有些人则离不开茶。两者共同的成分是什么?当然是咖啡因了! 但还不只这样。茶和咖啡的冲泡方式非常相似: 星巴兹咖啡冲泡法 1. 把
阅读全文
摘要:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 我们已经知道适配器模式是如何将一个类的接口转换成另一个符合客户期望的接口的。现在我们要看一个改变接口的新模式,但是它改变接口的原因是为了简化接口。这个模式被巧妙地命名为外观模式,之所以这么称呼,是
阅读全文
摘要:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 我们周围的适配器 如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用一个交流电的适配器。 你知道适配器的作用:它位于美式插头和欧式插座的中间,它的工作是将欧式插座转换成美式插座,好让美式插头可以
阅读全文
摘要:命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 一个家电公司想邀请你设计一个家电自动化遥控器的API。这个遥控器有7个可编程的插槽,每个都可以指定到一个不同的家电装置。每个插槽都有对应的“打开”和“关闭”按钮。这个遥控器还具备一个整体的撤
阅读全文
摘要:装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 星巴兹是以扩张速度最快而闻名的咖啡连锁店。由于扩张速度太快,他们准备更新订单系统,以合乎他们的饮料供应要求。 他们原先的类设计是这样的: 购买咖啡时,也可以要求在其中加入各种调料,例如蒸奶、豆浆、摩卡或覆盖奶泡
阅读全文
摘要:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 客户有一个WeatherData对象,负责追踪温度、湿度和气压等数据。现在客户给我们提了个需求,让我们利用WeatherData对象取得数据,并更新三个布告板:目前状况、气象统计和天气预报。
阅读全文
摘要:策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 假设有一个模拟鸭子的游戏,游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。这个游戏的内部设计了一个鸭子超类Duck,并让各种鸭子继承此超类。 现在要增加一个功能,让鸭子能飞。 实现方法1:在Duck
阅读全文
摘要:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 确保原料的一致 披萨店成功的关键在于新鲜、高质量的原料。要如何确保每家加盟店使用高质量的原料?你打算建造一家生成原料的工厂,并将原料运送到各家加盟店。对于这个做法,现在还剩下一个问题:加盟店坐落在不同的区域,纽约的红酱
阅读全文
摘要:单例模式(书中叫单件模式,个人习惯叫单例)确保一个类只有一个实例,并提供一个全局访问点。 有一些对象我们只需要一个,比方说:线程池、缓存、对话框、处理器偏好设置和注册表的对象等等。事实上,这类对象只能有一个实例,如果制造出多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量,或者是不一
阅读全文
摘要:"1. 单例模式" "2. 工厂模式" "3. 抽象工厂" "4. 策略模式" "5. 观察者模式" "6. 装饰者模式" "7. 命令模式" "8. 适配器模式" "9. 外观模式" "10. 模版方法模式" "11. 迭代器模式" 设计模式的六大原则 1、开闭原则(Open Close Prin
阅读全文
摘要:工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到了子类。 预定披萨 假设你有一个披萨店,预定披萨的代码可能是这么写的: 更多的披萨类型 但是,你现在需要更多的披萨类型。你必须增加一些代码,来“决定”适合的披萨类型,然后再“制造”这个披萨: 修改披萨类
阅读全文
摘要:单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该
阅读全文
摘要:设计模式运用广泛,其思想可以适用与任何领域,我在开始学习Java的时候就开始接触设计模式,刚开始是单利工厂等 简单的模式,看了几篇文章写了几个demo就觉得自己可以起飞了,其实不然,回头翻看自己以前写的代码,我真的想摔自己一脸,但是没办法谁让是我自己搞出来的呢。我每年都会把设计模式看一遍,每一次都受
阅读全文

浙公网安备 33010602011771号