设计模式
文章平均质量分 85
~无关风月~
手在键盘敲很轻
展开
-
使用Java枚举实现简单状态机
原文:https://www.baeldung.com/java-enum-simple-state-machine?spm=ata.21736010.0.0.9e8856d28q5ghb1、概述本文将介绍如何使用Java枚举实现状态机。我们也将对比说明该种方式与使用接口和实现类表示每种状态的优势所在。2、Java Enumsjava枚举是一种用于定义常量集合的特殊的类。此种方式有类型安全的实现和更好的可读性。举个例子,假如我们有个用于审批员工请假请求的HR软件系统。该请求经过团队负责人上报给部翻译 2021-08-22 21:16:56 · 884 阅读 · 1 评论 -
Builder模式 和 Fluent Interface
连贯接口(fluent interfaces)不仅仅能提供 类型 method chaining 和 Builder模式的方法级联调用,更重要的是能限定方法调用的顺序。连贯接口不仅仅在提供API,其连贯性带来的可读性和可理解性,也是一种领域语言,是一种Internal DSL。本文将介绍,如何通过连贯接口来使用和实现Builder模式。...原创 2021-08-22 11:44:04 · 697 阅读 · 1 评论 -
创建型模式之--创建者模式
1、变化是永恒的制作奔驰、宝马的车辆模型,汽车的启动、停止、喇叭声音、引擎声音 先后顺序由客户控制。每个车都是一个产品。在CarModel中我们定义了一个setSequence方法, 车辆模型的这几个动作要如何排布, 是在这个ArrayList中定义的。 然后run()方法根据sequence定义的顺序完成指定的顺序动作。车辆模型抽象类public abstract class CarModel { /** * 汽车启动顺序 */ private List&转载 2021-06-27 22:16:59 · 203 阅读 · 0 评论 -
行为型模式之-观察者模式
1、观察者模式原理:观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。2、观察者模式实现Subject (被观察的对象接口) 规定ConcreteSubject的统一接口 每个Subject可以有对个ObserverConcreteSubject (具体被观察对象)原创 2017-07-25 22:16:28 · 298 阅读 · 0 评论 -
设计模式-6大设计原则
设计模式(Design Pattern,DP) 它是一套理论,由软件界的前辈们总结出的一套可以反复使用的经验,它可以提高代码的重用性,增强系统的可维护性,以及解决一系列的复杂问题。 设计模式不是工具,它是软件开发的哲学。它能指导你如何去设计一个优秀的框架、编写一段强壮的代码、解决一个复制的需求。总原则:开闭原则(Open Close Principle)开闭原则就是说 对扩展开放,...原创 2018-05-20 15:32:39 · 175 阅读 · 1 评论 -
创建型模式之--单例模式
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。优点:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销,可以使用单例模式,只创建一个对象,一直保留在内存中。降低了系统内存的使用频率,减轻GC压力。可以避免对资源的多重占用,如 Print Spooler服务,管理所有本地和网络打印队列及控制所有打印工作,只能有一个实例,避免两个打印作业同时输出到打...原创 2018-05-21 16:01:32 · 240 阅读 · 0 评论 -
创建型模式之--简单工厂模式+工厂方法模式
女蜗造人女蜗通过八卦炉烧制三种不同的人种。 对造人过程进行分析,该过程设计三个对象:女蜗、八卦炉、三种不同肤色的人。女蜗:可以使用场景类表示,负者模拟场景,执行相关任务。八卦炉:类似工厂,负者制造产品(三种人)。三种人:他们都是同一接口下的不同实现类,是八卦炉的产品。类图: AbstractHumanFactory是一个抽象类,定义了一个八卦炉具有的整体功能,HumanFa...转载 2018-05-22 20:38:18 · 379 阅读 · 0 评论 -
创建型模式之--抽象工厂模式
1、女娲的失误在工厂模式中,女娲造人故事,忘记制造男女,三个肤色的人种都没有性别之分。产品类(人)修改: Human接口增加 getSex() 抽象方法,三种肤色的人的具体原实现类BlackHuman 、YellowHuman、WhiteHuman ,改为抽象类(不实现 getSex() 抽象方法),然后每个人种再定义各自的 FemaleXHuman和 MaleXHuman 实现类,并实...原创 2018-05-27 15:34:33 · 337 阅读 · 0 评论 -
结构型模式之--代理模式
游戏代理使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上。游戏代练帮忙打怪升级 游戏者接口,抽象游戏过程:public interface IGamePlayer { //登录游戏 public void login(String user,String passwo...转载 2018-05-28 22:40:04 · 182 阅读 · 0 评论