工厂模式(简单,方法,抽象)

简单工厂

定义
简单工厂模式属于创建型模式又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。
类图
在这里插入图片描述
示例代码

//抽象产品
abstract class AbatractProduct {
	public abstract void printName();
}
//产品A
class ProductA extends AbatractProduct {
	public void printName() {
		System.out.println("ProductA");
	}
}
//产品B
class ProductB extends AbatractProduct {
	public void printName() {
		System.out.println("ProductB");
	}
}
//简单工厂
class Factory {
	public static AbatractProduct createProduct(String product) {
		Car c = null;
		if ("A".equalsIgnoreCase(product))
			c = new ProductA();
		else if ("B".equalsIgnoreCase(product))
			c = new ProductB();
		return c;
	}
}
//客户端
public class Client {
	public static void main(String[] args) {
		AbatractProduct product = Factory.createProduct("A");
		car.printName();
	}
}

工厂方法

定义
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
类图
在这里插入图片描述
示例代码

//抽象产品
abstract class AbatractProduct {
	public abstract void printName();
}
//产品A
class ProductA extends AbatractProduct {
	public void printName() {
		System.out.println("ProductA");
	}
}
//产品B
class ProductB extends AbatractProduct {
	public void printName() {
		System.out.println("ProductB");
	}
} 
//抽象工厂  
abstract class AbstractFactory{  
    public abstract AbatractProduct createProduct() throws Exception;  
}  
//A工厂
class ProductAFactory extends AbstractFactory{  
    public AbatractProduct createProduct() throws Exception {  
        return new ProductA();  
    }  
}  
//B工厂
class ProductBFactory extends AbstractFactory{  
    public AbatractProduct createProduct() throws Exception {  
        return new ProductB();  
    }  
}  
//客户端
public class Client{  
    public static void main(String[] args) throws Exception {  
        AbstractFactory productAFactory = new ProductAFactory();  
        AbatractProduct productA = productAFactory.createProduct();   
        productA.printName();
    }  
}  

抽象工厂

定义
为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。
类图
在这里插入图片描述

    //抽象产品A
    abstract class AbstractProductA{   
        public abstract void printName();  
    } 

    //具体产品A1
    class ProductA1 extends AbstractProductA{  
        public void printName(){  
            System.out.println("ProductA1");  
        }  
    }  
    //具体产品A2
    class ProductA2 extends AbstractProductA{  
        public void printName(){  
            System.out.println("ProductA2");  
        }  
    }  
      
    //抽象产品B
    abstract class AbstractProductB{   
        public abstract void printName();  
    } 

    //具体产品B1
    class ProductB1 extends AbstractProductB{  
        public void printName(){  
            System.out.println("ProductB1");  
        }  
    }  

    //具体产品B2
    class ProductB2 extends AbstractProductB{  
        public void printName(){  
            System.out.println("ProductB2");  
        }  
    }  
      
    //抽象工厂  
    abstract class Factory{  
        public abstract AbstractProductA createA();  
        public abstract AbstractProductB createB();  
    }  

    //具体工厂 1 系列 
    class Factory1 extends Factory{  
        public AbstractProductA createA() {  
            return new AbstractProductA1();  
        }  
        public AbstractProductB createB() {  
            return new AbstractProductB1();  
        } 
    }  

    //具体工厂 2 系列
    class Factory2 extends Factory{  
        public AbstractProductA createBenzCar() {  
            return new AbstractProductA2();  
        }  
        public AbstractProductB createBmwCar() {  
            return new AbstractProductB2();  
        }  
    }  

    //客户端
    public class Client {  
        public static void main(String[] args) throws Exception {  
            Factory factory = new Factory1();  
            AbstractProductA productA = factory.createA();  
            productA.print();  
        }  
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值