抽象工厂模式:
抽象工厂可以生产同一种产品,但是是不同类型的,比如都是盐水棒冰,一个是圣麦乐,一个是光明。
代码示例:
/***
* @Author zzz_欢欢欢
*
* 抽象工厂模式
* 定义:简单工厂和工厂方法模式只可生成同一类型或者种类的产品,抽象工厂可以生产不同类型的产品
* 例如:在工厂方法中,工厂生成的Insert 和 Update 如果DB是不同的呢?
*/
public class AbstractFactory_Main {
public static void main(String[] args) {
AbstractFactory factory_insert = new AbstractFactory_Insert();
factory_insert.createMysql().demo();
factory_insert.createOracle().demo();
System.out.println("--------------分界线----------------");
AbstractFactory factory_update = new AbstractFactory_Update();
factory_update.createMysql().demo();
factory_update.createOracle().demo();
}
}
interface AbstractFactory{
AbstarctProduct_Mysql createMysql();
AbstarctProduct_Oracle createOracle();
}
class AbstractFactory_Insert implements AbstractFactory{
@Override
public AbstarctProduct_Mysql createMysql() {
return new AbstarctProduct_Mysql_Insert();
}
@Override
public AbstarctProduct_Oracle createOracle() {
return new AbstarctProduct_Oracle_Insert();
}
}
class AbstractFactory_Update implements AbstractFactory{
@Override
public AbstarctProduct_Mysql createMysql() {
return new AbstarctProduct_Mysql_Update();
}
@Override
public AbstarctProduct_Oracle createOracle() {
return new AbstarctProduct_Oracle_Update();
}
}
interface AbstarctProduct_Mysql{
void demo();
}
class AbstarctProduct_Mysql_Insert implements AbstarctProduct_Mysql{
@Override
public void demo() {
System.out.println("Mysql数据库插入产品实例化");
}
}
class AbstarctProduct_Mysql_Update implements AbstarctProduct_Mysql{
@Override
public void demo() {
System.out.println("Mysql数据库更新产品实例化");
}
}
interface AbstarctProduct_Oracle{
void demo();
}
class AbstarctProduct_Oracle_Insert implements AbstarctProduct_Oracle{
@Override
public void demo() {
System.out.println("Oracle数据库插入产品实例化");
}
}
class AbstarctProduct_Oracle_Update implements AbstarctProduct_Oracle{
@Override
public void demo() {
System.out.println("Oracle数据库更新产品实例化");
}
}