软件设计模式学习笔记
文章平均质量分 94
程哥哥吖
路虽远,行则将至;事虽难,做则必成。
展开
-
坦克大战游戏开发中的设计模式总结
github地址:坦克的开火使用策略模式,定义两个策略:发射一颗子弹四面发射四颗子弹FireStrategy接口:DefaultFireStrategy类:FourDirFireStrategy类:将策略名作为字符串存储在property中,在需要使用某种策略时通过反射加载。加门面思想:之前每个坦克子弹类都持有界面类的引用,现在将所有坦克子弹直接放到gamemodel类之中,不在直接与界面打交道,gamemodel起一个门面的作用(Model和View分离),让GameModel持有所有对原创 2022-07-05 20:16:52 · 1011 阅读 · 0 评论 -
软件设计模式学习笔记(九)
【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。类图如下:代码如下:问题分析:定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式包含以下主要角色。对上述电梯的案例使用状态模式进行改进。类图如下:代码如下:1.4 优缺点1,优点:2,缺点:定义:又被原创 2022-06-30 23:35:41 · 188 阅读 · 0 评论 -
软件设计模式学习笔记(八)
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。行为型模式分为:以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。在面向对象程序设计过程中,程原创 2022-06-28 22:29:12 · 186 阅读 · 0 评论 -
软件设计模式学习笔记(七)
对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对待容器对象和叶子对象。定义: 又名部原创 2022-06-28 13:09:00 · 247 阅读 · 0 评论 -
软件设计模式学习笔记(六)
我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。使用继承的方式存在的问题:扩展性不好如果要再加一种配料(火腿肠),我们就会发现需要给FriedRice和FriedNoodles分别定义一个子类。如果要新增一个快餐品类(炒河粉)的话,就需要定义更多的子类。产生过多的子类定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。装饰(Decorat原创 2022-06-25 18:09:21 · 139 阅读 · 0 评论 -
软件设计模式学习笔记(五)
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。结构型模式分为以下 7 种:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理原创 2022-06-24 22:20:10 · 156 阅读 · 0 评论 -
软件设计模式学习笔记(四)
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。原型模式包含如下角色:接口类图如下:原型模式的克隆分为浅克隆和深克隆。Java中的Object类中提供了 方法来实现浅克隆。 Cloneable 接口是上面的类图中的抽象原型类,而实现了Cloneable接口的子实现类就是具体的原型类。代码如下:Realizetype(具体的原型类):PrototypeTest(测试访问类):1.4 案例用原型模式生成“三好学生”奖状同一学校的“三好学生”奖状除了获奖人姓名不同,其他都原创 2022-06-23 21:52:01 · 144 阅读 · 0 评论 -
软件设计模式学习笔记(三)
需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类的设计如下:在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如原创 2022-06-21 22:32:23 · 166 阅读 · 0 评论 -
软件设计模式学习笔记(二)
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式的主要有以下角色:饿汉式-方式1(静态变量方式)说明: 该方式在成员位置声明Singleton类型的静态变量,并创建Singleton类的对象instance。instance对象是随着类的加原创 2022-06-19 19:18:44 · 154 阅读 · 0 评论 -
软件设计模式学习笔记(一)
参考:https://www.bilibili.com/video/BV1Np4y1z7BU?p=5&vd_source=1bf97eebc4302da23ef24969da020c74 软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。原创 2022-06-18 17:37:14 · 455 阅读 · 0 评论