1.抽象工厂
抽象工厂:我们都知道,工厂,一般只有一个作用,那就生产,比如,吉利汽车厂,那就制造吉利汽
车,iphone手机制造厂就造iphone等等
所以可以用一个简单的方法概括,就是create();
2.具体汽车制造厂
具体汽车制造厂:实现了抽象工厂,具有实际的制造汽车的流程和方法等
3.抽象汽车
抽象汽车:汽车我们一般都知道,能跑,能放音乐,能导航,能转弯这些都是汽车的共性
4.具体汽车
抽象汽车:具体汽车实现了抽象汽车,具备其所有的功能,当然不同的汽车可能具备的功能还不一样
上述简单的做了介绍,大体而言就是,具体汽车厂制造相应的的汽车,比如:奥迪的工厂,制造奥迪汽
车,大众的工厂,制造大众的汽车等。
例子解析
上面我们已经很清晰的明白了他们之间的关系,所以接下来就用代码演示,将上面我们的想法和逻辑用代码表现出来:
(1)抽象汽车工厂
- package com.zengtao.demo.factory;
- /**
- * 抽象工厂
- */
- public abstract class CarFactory {
- public abstract <T extends Car> T createCar(Class<T> cla);
- }
(2)具体汽车工厂
- package com.zengtao.demo.factory;
- /**
- * 奥迪工厂
- */
- public class AudiFactory extends CarFactory {
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Car> T createCar(Class<T> cla) {
- Car car = null;
- try {
- car = (Car) Class.forName(cla.getName()).newInstance();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return (T) car;
- }
- }
(3)定义抽象的车
- package com.zengtao.demo.factory;
- public abstract class Car {
- public abstract void drive();
- public abstract void selfNagive();
- public abstract void playMusic();
- }
(4)具体的车(奥迪q3)
- package com.zengtao.demo.factory;
- public class AudiQ3Car extends AudiCar {
- @Override
- public void drive() {
- System.out.println("AudiQ3Car 已经制造成功");
- System.out.println("AudiQ3Car drive");
- }
- @Override
- public void selfNagive() {
- System.out.println("AudiQ3Car selfNagive");
- }
- @Override
- public void playMusic() {
- System.out.println("AudiQ3Car playMusic");
- System.out.println("");
- }
- }
(奥迪q5)
- package com.zengtao.demo.factory;
- public class AudiQ5Car extends AudiCar {
- @Override
- public void drive() {
- System.out.println("AudiQ5Car 已经制造成功");
- System.out.println("AudiQ5Car drive");
- }
- @Override
- public void selfNagive() {
- System.out.println("AudiQ5Car selfNagive");
- }
- @Override
- public void playMusic() {
- System.out.println("AudiQ5Car playMusic");
- System.out.println("");
- }
- }
(5)调用
- package com.zengtao.demo;
- import com.zengtao.demo.factory.AudiFactory;
- import com.zengtao.demo.factory.AudiQ3Car;
- import com.zengtao.demo.factory.AudiQ5Car;
- public class Main {
- public static void main(String[] str) {
- // 创建工厂
- AudiFactory audiFactory = new AudiFactory();
- // 利用工厂制造q3车
- AudiQ3Car audiQ3Car = audiFactory.createCar(AudiQ3Car.class);
- // 利用工厂制造q5车
- AudiQ5Car audiQ5Car = audiFactory.createCar(AudiQ5Car.class);
- // 开始开车放音乐
- audiQ3Car.drive();
- audiQ3Car.playMusic();
- audiQ5Car.drive();
- audiQ5Car.playMusic();
- }
- }

我的微信
有问题微信找我