一、抽象工厂原理 AbstractFactory 声明一个创建抽象产品对象的操作接口。 ConcreteFactory 实现创建具体产品对象的操作。 AbstractProduct 为一类产品对象声明一个接口。 ConcreteProduct 定义一个将被相应的具体工厂创建的产品对象。 实现AbstractProduct接口。 Client 仅使用由AbstractFactory和AbstractProduct类声明的接口 抽象工厂中的协作: 通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应使用不同的具体工厂。 AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。 抽象工厂中的类图: 二、单件模式原理 Prototype 声明一个克隆自身的接口 ConcretePrototype 实现一个克隆自身的操作 Client 让一个原型克隆自身从而创建一个新的对象 单件模式的结构: 将构造方法定义为私有的,阻止了外部程序实例化该类,但可以在该类内部写一个静态的public方法GetInstance(),这个方法的目的就是返回一个类实例,并在此方法中,去做是否有实例化的判断。 单件模式的类图: 问题: 该公司数据库拥有三张表,分别是用户表、部门表和项目表。每张表的操作都支持查询和添加功能。数据库支持mysql和sqlserver两种。结合抽象工厂模式和单件模式给出该系统的模拟代码。 在抽象工厂模式中,一个应用里一般每个产品只需要一个具体工厂的实例,因此,工厂通常最好用单件模式实现。 要求结合抽象工厂模式和单件模式,模拟公司数据库创建过程。 类图: 实现代码:
1 |
|
结果: