抽象工厂模式简单实例
来源:互联网 发布:工业企业分行业数据 编辑:程序博客网 时间:2024/05/01 05:56
抽象工厂模式
是所有形式的工厂模式中最为抽象和最具有一般性的一种形态,抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类
抽象工厂模式结构图:
抽象工厂模式之数据库操作工厂
抽象工厂类:
测试结果图:
抽象工厂模式优点:
1:抽象工厂模式隔离了类的生产,客户不需要知道什么呗创建
2:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
3:增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。
缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。
抽象工厂类:
package AbstractFactory;import AbstractProduct.Connection;import AbstractProduct.Statement;public interface DBFactory { public Connection createConnection(); public Statement createStatement(); }具体工厂类1:
package ConcreteFactory;import AbstractFactory.DBFactory;import AbstractProduct.Connection;import AbstractProduct.Statement;import ConcreteProduct.MysqlConnection;import ConcreteProduct.MysqlStatement;public class MysqlFactory implements DBFactory {@Overridepublic Connection createConnection() {return new MysqlConnection();}@Overridepublic Statement createStatement() {return new MysqlStatement();}}具体工厂类2:
package ConcreteFactory;import AbstractFactory.DBFactory;import AbstractProduct.Connection;import AbstractProduct.Statement;import ConcreteProduct.OracleConnection;import ConcreteProduct.OracleStatement;public class OracleFactory implements DBFactory {@Overridepublic Connection createConnection() {return new OracleConnection();}@Overridepublic Statement createStatement() {return new OracleStatement();}}抽象产品类A:
package AbstractProduct;public interface Connection { public void connect();}抽象产品类B:
package AbstractProduct;public interface Statement { public void executeStatement();}具体产品类A1:
package ConcreteProduct;import AbstractProduct.Connection;public class MysqlConnection implements Connection {@Overridepublic void connect() {// TODO Auto-generated method stubSystem.out.println("连接mysql数据库");}}具体产品类A2:
package ConcreteProduct;import AbstractProduct.Statement;public class MysqlStatement implements Statement {@Overridepublic void executeStatement() {System.out.println("执行Mysql数据库语句");}}具体产品类B1:
package ConcreteProduct;import AbstractProduct.Connection;public class OracleConnection implements Connection {@Overridepublic void connect() {// TODO Auto-generated method stubSystem.out.println("连接oracle数据库");}}具体产品类B2:
package ConcreteProduct;import AbstractProduct.Statement;public class OracleStatement implements Statement {@Overridepublic void executeStatement() {System.out.println("执行oracle数据库语句");}}测试类:
package Test;import AbstractFactory.DBFactory;import AbstractProduct.Connection;import AbstractProduct.Statement;import ConcreteFactory.OracleFactory;public class test {public static void main(String args[]){DBFactory factory;Connection connection;Statement statement;factory=new OracleFactory();connection=factory.createConnection();statement=factory.createStatement();connection.connect();statement.executeStatement();}}抽象工厂模式:
测试结果图:
抽象工厂模式优点:
1:抽象工厂模式隔离了类的生产,客户不需要知道什么呗创建
2:当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
3:增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。
缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。
0 0
- 抽象工厂模式简单实例
- 工厂方法模式,抽象工厂模式,简单实例分析
- 抽象工厂模式实例
- 结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- 简单工厂模式、工厂方法模式、抽象工厂模式这三种工厂模式的实例及其闭合原则。
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂|工厂方法|抽象工厂模式
- 简单工厂,工厂模式,抽象工厂
- UI阶段的 Target/Action设计模式
- Python文件I/O
- 【黑马程序员】多线程
- mysql和oracle的语法上的差异
- poj1502
- 抽象工厂模式简单实例
- pyspark 【未完待续】
- 笔记八(圆周运动)
- Navicat for Mysql的操作使用
- swift 快速奔跑的兔几 本节的内容是:用AVAdioPlayer播放声音 语音合成
- java(1)
- opencv学习之cvPyrDown
- c语言的不定长数组
- 非著名程序员公众号