桌子

抽象工厂模式

烂漫一生 提交于 2019-11-27 20:09:03
姓名:赵汉青 学号:07770201 模式名称:抽象工厂模式 1.问题描述 生活场景 :某家具厂为学校生产课桌和座椅,开始只生产木质的课桌和座椅,后来经学校要求,又开始为学校生产铁质的课桌和座椅。 设计目标 :实现针对多种成套产品的生产,每套产品有多种不同等级结构的物品组成。 2.不假思索的思路 思路描述 :通过简单工厂的模式来实现。即在生产木质课桌的工厂里加开生产铁质课桌的生产线;在生产木质椅子的工厂里加开生产铁质椅子的生产线。 类结构图 缺点 :这样的设计,工厂类集中了所有的实例的创建逻辑,违反了单一职责原则,即每一个类都只负责一件具体的事情;同时,当产品不断增多时,可能会出现要求工厂类根据不同条件创建不同实例的需求,工厂类就无法满足需求,不利于后续的扩充和维护。而且,这种方式割裂了产品簇之间的关系,不能体现出木桌椅或铁桌椅之间的配套关系。 代码: abstract class Desk //虚拟的课桌类 { public abstract void produce(); } class WoodDesk : Desk //木课桌类,继承课桌类 { public override void produce() { Console.WriteLine("木桌子"); } } class IronDesk : Desk //铁课桌类,继承课桌类 { public override