设计模式
许喜朝
这个作者很懒,什么都没留下…
展开
-
策略模式
策略模式 案例导入 需求:设计一款植物大战僵尸的游戏 现有两款僵尸,他们的属性如下 属性 外观 移动方式 攻击 普通僵尸 普通 朝着一个方向移动 咬 旗手僵尸 普通+手持旗子 朝着一个方向移动 咬 设计出这两个僵尸类 这种属性简单的类很好实现,只需要定义一个抽象类,把不同的属性抽离出来,相同的属性实现,子类来继承实现不同的属性 //抽象类 abstract class AbstractZombie{ //抽象方法 public abstract void displa原创 2020-12-29 08:54:46 · 156 阅读 · 0 评论 -
模版方法模式
模版方法模式 模式定义 定义一个操作的算法骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 实现 需求:在数据库连接方面Oracle和Mysql除了驱动程序不一样,其他的都可以复用,并且步骤都是一致的 import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; import com.sun.xml.internal.xsom.XSUnionSimpleType; /**原创 2020-12-29 08:54:05 · 87 阅读 · 0 评论 -
观察者模式
观察者模式 模式定义 定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当注意对象发生变化时,它的所有依赖者都会收到通知并更新 应用场景 当更改一个对象的状态可能需要更改其他对象,并且实际的对象集事先未知或动态更改时,请使用观察者模式 优点 1.符合开闭原则 2.可以在运行时建立对象之间的关系 实现 //主题对象 class Subject{ //容器 List<ObServer> container = new ArrayList<>();原创 2020-12-29 08:53:27 · 347 阅读 · 0 评论 -
装饰者模式
装饰者模式 模式定义 在不改变原有对象的基础上,将功能附加到对象上 应用场景 拓展一个类的功能或者给一个类添加附加职责 优点 不改变原有对象的情况下给一个对象拓展功能 使用不同的组合实现不同的效果 符合开闭原则 实现 /** * 需求 * 一个照相机拥有拍照功能,在不改变拍照功能的情况下添加美颜和滤镜功能 */ public class DecoratorTest { public static void main(String[] args) { Component comp原创 2020-12-17 11:41:59 · 61 阅读 · 1 评论 -
适配器模式
适配器模式 模式定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 应用场景 当你希望使用某些现有类,但其他接口与你的其他代码不兼容时,请使用适配器模式 当你希望重用几个现有的子类,这些子类缺少一些不能添加到超类中的公共功能时,请使用适配器模式 优点 符合单一指责原则 符合开闭原则 实现 对象适配器模式 package v1; /** * 对象适配器模式 * 需求: * 将家用220v电压转换成手机能使用的5v电压 */ cl原创 2020-12-16 15:53:56 · 96 阅读 · 0 评论 -
原型模式
原型模式 模式定义 指原型实例指定创建对象的种类,并且通过拷贝这些原型创建一个新的对象 换句话讲就是我们通常所说的复制粘贴,这就是原型模式的思想 实现 被克隆的对象实现Cloneable接口 重写clone方法调用父类的clone方法 public class PrototypeTest { public static void main(String[] args) throws CloneNotSupportedException { Product4 product4 = ne原创 2020-12-16 14:55:43 · 69 阅读 · 0 评论 -
享元模式
享元模式 模式定义 运用共享技术有效的支持大量粒度的对象 优点 如果系统有大量类似的对象,可以节省大量的内存及cpu资源 实现 import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * 需求: * 在一张游戏地图中有无数的树,那么是不是每一颗树都是一个对象呢? * 显然不是!不同种类的树是不同的对象,同一种类的树是一个对象 * 只是一些属性不同而已 */ public class FlyWeightTes原创 2020-12-16 14:55:16 · 85 阅读 · 0 评论 -
原型模式
原型模式 模式定义 指原型实例指定创建对象的种类,并且通过拷贝这些原型创建一个新的对象 换句话讲就是我们通常所说的复制粘贴,这就是原型模式的思想 实现 被克隆的对象实现Cloneable接口 重写clone方法调用父类的clone方法 public class PrototypeTest { public static void main(String[] args) throws CloneNotSupportedException { Product4 product4 = ne原创 2020-12-15 19:59:21 · 61 阅读 · 0 评论 -
建造者模式
建造者模式 应用场景 需要生成的对象具有复杂的内部结构 需要生成的对象内部属性本身相互依赖 与不可变对象配合使用 优点 建造者独立,易拓展 便于控制细节风险 建造者模式 public class BuilderTest { public static void main(String[] args) { ProductBuilder productBuilder = new SpecialConcreteProductBuilder(); Director d原创 2020-12-04 15:11:55 · 86 阅读 · 0 评论 -
工厂设计模式
工厂设计模式 简单工厂模式 /** * 简单工厂模式 */ public class FactoryPattern { public static void main(String[] args) { //产品使用 Application application = new Application(); Product object = application.getObject("0"); object.method();原创 2020-11-25 19:23:40 · 97 阅读 · 0 评论 -
单例设计模式(java与node实现)
单例设计模式 什么是单例设计模式 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例 具体实现 (1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 (2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。 (3)定义一个静态方法返回这个唯一对象。 java语言实现 懒汉模式 延迟加载,当只有使用的时候才开始真正的实例化 /** *原创 2020-11-24 20:11:56 · 154 阅读 · 0 评论