准备工作
interface Product{
void method();
}
class ProductA implements Product{
@Override
public void method() {
System.out.println("ProductA.method executed.");
}
}
class ProductA1 implements Product{
@Override
public void method() {
System.out.println("ProductA1.method executed.");
}
}
简单工厂模式
//简单工厂模式:将实例化过程封装
class SimpleFactory{
public static Product createProduct(String type){
switch (type){
case "0":
return new ProductA();
case "1":
return new ProductA1();
default:
return null;
}
}
}
class Application{
public Product createProduct(String type){
return SimpleFactory.createProduct(type);
}
}
测试
public class FactoryMethod {
public static void main(String[] args) {
Application application = new Application();
Product product = application.createProduct("0");
//Product product = application.createProduct("1");
product.method();
}
}
运行结果
运行结果
工厂方法模式
//工厂方法模式:将实例化过程交给子类执行
interface Application {
Product createProduct();
}
class ConCreateProductA implements Application{
@Override
public Product createProduct() {
return new ProductA();
}
}
class ConCreateProductA1 implements Application{
@Override
public Product createProduct() {
return new ProductA1();
}
}
测试
public class FactoryMethod {
public static void main(String[] args) {
//Application application = new ConCreateProductA();
Application application = new ConCreateProductA1();
Product product = application.createProduct();
product.method();
}
}
运行结果
运行结果
抽象工厂模式
准备工作
//抽象工厂方法:提供一个创建一系列相关或互相依赖的接口,而无需考虑具体的类
interface IConnection{
void connect();
}
interface ICommend{
void commend();
}
interface IDatabaseUtils{
IConnection getConnection();
ICommend getCommend();
}
具体实现1
//Mysql建立连接与发送命令
class MysqlConnection implements IConnection{
@Override
public void connect() {
System.out.println("mysql.connected");
}
}
class MysqlCommend implements ICommend{
@Override
public void commend() {
System.out.println("mysql.commend");
}
}
class MysqlUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new MysqlConnection();
}
@Override
public ICommend getCommend() {
return new MysqlCommend();
}
}
具体实现2
//Oracle建立连接与发送命令
class OracleConnection implements IConnection{
@Override
public void connect() {
System.out.println("oracle.connected");
}
}
class OracleCommend implements ICommend{
@Override
public void commend() {
System.out.println("oracle.commend");
}
}
class OracleUtils implements IDatabaseUtils{
@Override
public IConnection getConnection() {
return new OracleConnection();
}
@Override
public ICommend getCommend() {
return new OracleCommend();
}
测试
public class AbstractFactoryDemo {
public static void main(String[] args) {
//IDatabaseUtils databaseUtils = new MysqlUtils();
IDatabaseUtils databaseUtils = new OracleUtils();
IConnection connection = databaseUtils.getConnection();
connection.connect();
final ICommend commend = databaseUtils.getCommend();
commend.commend();
}
}
运行结果
运行结果