拓扑排序:算法软件设计 关于设计模式与面向抽象设计文档

设计模式

关于设计模式的复习可以看以下连接:
掘金|学习并理解23种设计模式 https://juejin.im/post/5c8756e6e51d456cda2e7ff1#heading-27

对于具体某一设计模式的理解,可以看以下连接:
编程字典|Java工厂设计模式 http://codingdict.com/article/8713

其中,主要可用于本程序的有两个设计模式

抽象工厂模式

定义

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

在这里插入图片描述

举例

抽象工厂和工厂方法不同的地方在于,生产产品的工厂是抽象的。举例,可口可乐公司生产可乐的同时,也需要生产装可乐的瓶子和箱子,瓶子和箱子也是可口可乐专属定制的,同样百事可乐公司也会有这个需求。这个时候我们的工厂不仅仅是生产可乐饮料的工厂,还必须同时生产同一主题的瓶子和箱子,所以它是一个抽象的主题工厂,专门生产同一主题的不同商品。

// 可乐抽象类和派生类
@interface Cola : NSObject
@end
@interface CocaCola : Cola
@end
@interface PesiCola : Cola
@end

// 瓶子抽象类和派生类
@interface Bottle : NSObject
@end
@interface CocaColaBottle : Bottle
@end
@interface PesiColaBottle : Bottle
@end

// 箱子抽象类和派生类
@interface Box : NSObject
@end
@interface CocaColaBox : Box
@end
@interface PesiColaBox : Box
@end

本程序具体操作

查看以下链接的详细说明,懂得抽象工厂模式的基本使用方式,并根据本文需要进行修改
http://codingdict.com/article/8714

装饰模式

定义

装饰模式(Decorator Pattern) :不改变原有对象的前提下,动态地给一个对象增加一些额外的功能。

在这里插入图片描述

扫描二维码关注公众号,回复: 12430793 查看本文章
举例

装饰模式贴合开闭原则,在不改变原有类的情况下,对父类进行改造或新增功能。举例,定一个抽象类Tea,只能提供白开水,但是通过装饰类BlackTea装饰之后拓展了新功能,通过BlackTea类可以用白开水泡红茶,还可以选择加柠檬。

@interface Tea : NSObject

+ (instancetype)createTea;

@end

@interface BlackTea : Tea

@property (nonatomic, strong) Tea *tea;

// 加红茶
- (void)addBlackTea;
// 红茶可以加柠檬
- (void)addLemon;

@end

本程序具体操作

查看以下链接的详细说明,懂得装饰者模式的基本使用方式,并根据本文需要进行修改
http://codingdict.com/article/8722

面向抽象编程详细设计

本程序的要求是使用面向对象编程思维,我的想法是,将工厂模式用于大的框架中,如下思维导图所示:
在这里插入图片描述
即将各个功能封装为对象,进而对于每个功能进行具体实现。其中,关于输入的两个方式(txt导入及控制台输入),需要使用装饰者模式,并且对于结果的展示,也需要使用装饰者模式。这是我的初步想法,关于界面、具体函数的框架、具体参数的设置,还需要进一步地进行细化。

猜你喜欢

转载自blog.csdn.net/weixin_42305039/article/details/100127572
今日推荐