设计模式案例分析

设计模式案例分析

        设计模式说是一种在特定场景下普适且可复用的解决方案,是一种可以用于提高代码可读性、可扩展性、可维护性和可测性的最佳实践。能迅速提高代码的可读性、健壮性、扩展性,

Java开发的六大基本原则

1.单一职责原则。

2.开放封闭原则。

3.里氏替换原则。所有引用基类(父类)的地方必须能透明地使用其子类的对象

4.接口隔离原则。 使用多个专门的接口,而不使用单一的总接口

5.依赖倒置原则。抽象不应该依赖于细节,细节应当依赖于抽象

6.迪米特原则。一个软件实体应当尽可能少地与其他实体发生相互作用

案例分析一

现在就要做一个营销,需要用户参与一个活动,然后完成一系列的任务,最后可以得到一些奖励作为回报。活动的奖励包含美团外卖、酒旅和美食等多种品类券。

设计模式(遵循六大基本原则)

(1)策略模式(用于封装算法)

       策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式通常包含以下角色:

● 抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。

● 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现。

● 环境(Context)类:持有一个策略类的引用,最终给客户端调用。

(2)适配器模式

适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式包含以下主要角色:

● 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。

● 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。

● 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。

(3)单例模式( 策略上下文,用于管理策略的注册和获取)

单例模式设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

案例分析二

设计任务模型的。重点关注状态的流转变更,以及状态变更后的消息通知。

设计模式(遵循六大基本原则)

(1)状态模式(用于状态流转的控制)

状态模式 :对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。状态模式包含以下主要角色:

● 环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责具体状态的切换。

● 抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为,可以有一个或多个行为。

● 具体状态(Concrete State)角色:实现抽象状态所对应的行为,并且在需要的情况下进行状态切换。

(2)观察者模式(任务完成时的通知)

观察者模式:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布 - 订阅模式、模型 - 视图模式,它是对象行为型模式。观察者模式的主要角色如下。

● 抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。

● 具体主题(Concrete Subject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察者对象。

● 抽象观察者(Observer)角色:它是一个抽象类或接口,它包含了一个更新自己的抽象方法,当接到具体主题的更改通知时被调用。

● 具体观察者(Concrete Observer)角色:实现抽象观察者中定义的抽象方法,以便在得到目标的更改通知时更新自身的状态。

案例分析三

要在任务型活动的参与方法上增加一层风险控制

(1)建造者模式

建造者模式:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。建造者模式的主要角色如下 :

● 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。

● 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。

● 具体建造者 (Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。

● 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

(2)装饰器模式

         装饰器模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。装饰器模式主要包含以下角色:

● 抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。

● 具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。

● 抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。

● 具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任

总结

使用设计模式,代码易扩展,且不影响之前的应用;另外很多案例脱离应用场景。部分设计模式显然更适用于大型复杂的结构设计,而当其应用到简单的场景时,仿佛让代码变得更加繁琐、冗余。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 真诚的,TNANKS。 个人Github-23种设计模式案例链接 创建型模式 工厂模式 工厂模式(Factory ...
    水清_木秀阅读 26,174评论 11 204
  • 创建型模式 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设...
    Android高级开发阅读 2,432评论 0 1
  • 1.抽象工厂: Factory提供一个创建一系列或相关依赖对象的接口,而无需指定他们具体的类。针对多级结构. 抽象...
    uiiang阅读 2,890评论 0 2
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,796评论 0 14
  • 关于这篇文章本人的体悟,要彻底理解面向对象思想,一切从面向对象的思想触发去理解学习。摒弃面向过程的业务思维将实际工...
    牧童US阅读 1,013评论 0 4