设计模式,即DesignPatterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。设计模式这个术语是上个世纪90年代由ErichGamma、RichardHelm、RaplhJohnson和JonhnVlissides四个人总结提炼出来的,这四人也被称为四人帮(GoF)。对于那些具有丰富的开发经验的开发人员,学习设计模式有助
转载 2020-12-30 19:22:08
1161阅读
策略模式
翻译 2021-11-22 17:48:56
156阅读
工厂模式工厂模式是创建型模式模式,解决new对象时的一些列问题,如:依赖,耦合,后期维护等1. 简单工厂模式如:有一个披萨店类,制作披萨流程如下的,,,代码里直接new出了披萨,然后做些操作,如下:我们把new这段代码封装起来,移动到单独的一个类里(SimplePizzaFactory),我们新增的类就是工厂,如下;最终的代码如下;总结:新增的SimplePizzaFactory就是简单工厂模式
原创 2018-04-16 14:32:15
712阅读
外观模式外观模式定义:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。类图如下:要点:●外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。●外观模式实现了子系统与客户之间的松耦合关系。●外观模式没有封装子系统的类,只是提供了简单的接口。如果应用需要,它并不限制客户使用子系统类。因此可以再系统易用性与通用性之间选择。●外观模
原创 2018-04-27 11:28:27
738阅读
  最近比较忙,有段时间没有更新设计模式的进度了。今天继续学习组合设计模式。  组合模式的例子我们继续延续上篇《HeadFirst设计模式——迭代器模式》的菜单例子,首先声明下迭代器和组合模式没有什么关系,他们是两个不同模式。只是我们在这个菜单例子的组合模式内部会用到迭代器。迭代器模式中说到两个餐馆合并然后使用迭代器进行统一处理菜单的打印,但是现在有一个新的需求是原来大菜单中我们希望加入子菜单,比
原创 2020-01-06 09:25:04
316阅读
1、继承带来的扩展和复用问题继承作为面向对象的三大要素(封装、继承、多态)之一为什么会带来问题,问题如何解决然后形成一种设计模式head frist设计模式书中以鸭子作为例子讲解什么情况下继承的方式会带来问题。首先有各种各样的鸭子,那么自然想到各种鸭子继承自一个父类:父类为Duck,现有绿头鸭GreenHeadDuck和红头鸭RedHeadDuckpublic abstract Class Du
转载 2021-05-16 16:17:53
185阅读
2评论
策略模式问题的描述:需求:开发一个鸭子游戏,能游泳,有外观,实现类图如下:增加的需求:1. 加入飞行功能2. 加入呱呱叫的功能。。。等等,暂时的解决方式如下:上线后出现了些问题:1. 所有的鸭子都能叫吗?木头鸭子呢?2. 所有的鸭子都能飞吗?木头鸭子呢?橡皮鸭子呢?总结下,使用继承的缺点:代码在多个子类中重复运行时的行为不容易改变很难知道鸭子的全部行为改变会牵一发动全身,造成其他鸭子不想要的改变。
原创 2018-04-10 15:54:20
619阅读
命令模式命令模式定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式,封装方法调用,命令模式可将“动作的请求者”从“动作的执行者”对象中解耦。类图,如下:生活中例子:餐厅点菜(顾客,服务员,厨师关系,顾客订单告诉服务员就是,不用直接厨师打交道,厨师收到服务员的发来的订单后开始做好大餐)。命令模式的优点:●在命令模式中,请求者不直接与接收
原创 2018-04-26 12:01:43
838阅读
装饰模式    装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。    装修模式的角色如下:抽象构件角色(Component):给出一个抽象接口,以规范准备接收附加责任的对象。具体构件角色(Concrete Component):定义将要接收附加责任的类。装饰角色(Decora
原创 2018-04-13 17:04:14
467阅读
1点赞
  最近比较忙,有段时间没有更新设计模式的进度了。今天继续学习组合设计模式。  组合模式的例子我们继续延续上篇《HeadFirst设计模式——迭代器模式》的菜单例子,首先声明下迭代器和组合模式没有什么关系,他们是两个不同模式。只是我们在这个菜单例子的组合模式内部会用到迭代器。迭代器模式中说到两个餐馆合并然后使用迭代器进行统一处理菜单的打印,但是现在有一个新的需求是原来大菜单中我们希望加入子菜单,比
原创 2020-01-06 09:24:56
343阅读
糖果机   如下糖果机工作状态图,我们对这个状态图进行编码实现糖果机的工作过程 这个状态图的每个圆圈代表一个状态,可以看到有4个状态同时又4个动作,分别是:“投入1元钱”、“退回1元钱”、“转动曲柄”、“发
原创 2021-09-01 14:11:04
107阅读
## Head First设计模式 Java 设计模式是一种解决软件设计问题的经验总结,它提供了一套可重用的解决方案,帮助我们更有效地构建可扩展、可维护的软件系统。本文将介绍《Head First设计模式 Java》一书中的一些常见设计模式,并通过代码示例来说明它们的应用场景和实现方法。 ### 单例模式 单例模式是一种创建型模式,它保证一个类只有一个实例,并提供一个全局访问点。在多线程环境
原创 2023-08-04 14:59:56
42阅读
python web 开发犯了低级错误,这本书看了一半了才知道书名应为《head first python》,不是hand first..现在开始一个web应用。总算是熟悉的内容了。但项目的总体的配置还是有些麻烦的。考虑到Kelly教练的不断变更的需求,现在需要开发一个网站。包括:欢迎页面选择选手显示时间MVC模式和架构M 模型:数据储存。你需要一个model模块,用一个函数比如set把txt文件
转载 2024-01-12 13:51:55
70阅读
单例设计模式:确保一类只有一个实例,并提供一个全局访问点。 应用场景: 线程池、缓存、日志对象、注册表设置等 多线程下同步全局实例获取的方法 public class Singleton{ private static Singleton singleton = null; private Sing ...
转载 2021-09-06 04:42:00
38阅读
2评论
单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。类图如下:代码实现如下:publicclassSingleton{//用静态变量来记录唯一的实例privatestaticSingletoninstance;/***构造方法私有化,防止被创建,只能类内部能使用构造器*/privateSingleton(){}/***实例化对象,并返回这个对象**@return*/publicst
原创 2018-04-16 17:16:51
524阅读
StarBuzzzzzzzzzzzzz!!!
翻译 2021-11-22 17:48:56
169阅读
1. 装饰器模式与继承 与装饰器模式相比,继承更容易造成类爆炸; 装饰器模式:利用组合取代继承;
转载 2017-07-24 11:02:00
71阅读
2评论
一、整体代码         Singleton.java   public class Singleton { private static Singleton uniqueInstance; // other useful instance variables here private Singleton() {} public static synchronized Si
转载 2013-10-16 13:27:00
57阅读
2评论
模板方法模式定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法就是一个固定步骤的“算法”骨架方法。这个算法的可变部分通过继承,在子类中重载实现。这样就可以在算法骨架不变的情况下,算法细节步骤根据不同的需求进行适应的改变,类图如下:优点:●模板方法模式在定义了一组算法,将具体的实现交由子类负责。
原创 2018-04-27 13:28:35
689阅读
1点赞
软件系统设计原则:软件系统唯一不变的性质就是变化,系统设计时首先从高层抽象出功能模块和交互接口,形成一个相对稳定的系统模型;分离开不变和变化的,不变的属于框架组件,变化的抽象出接口,封装具体实现; 利用多态机制实现功能(接口)组合,针对接口编程,不针对实现编程;对象应该对扩展开放,对修改关闭,即在不修改内部实现的条件下,由外部使用者继承或组合。
原创 2013-05-02 16:16:37
181阅读
  • 1
  • 2
  • 3
  • 4
  • 5