触碰大师们的思想(一)之 简单工厂模式

来源:互联网 发布:淘宝退货运费多少钱 编辑:程序博客网 时间:2024/06/06 03:18

简单工厂模式,又叫静态工厂模式,也就是把生产实例的动作交给工厂来完成,在使用类里没有生产实例的代码,加上反射的使用,极大的减少耦合,超级容易扩展。

package myDesignPattern01;

一个汽车抽象类:

public abstract class Car {public abstract void printBrand();}

三个品牌车:

宝马:

public class BMW extends Car {@Overridepublic void printBrand() {System.out.println("这是一辆宝马!");}}

尼桑:

public class Nissan extends Car{@Overridepublic void printBrand() {System.out.println("叫你爸爸给你买辆GTR");}}
奔驰:

public class Benz extends Car{@Overridepublic void printBrand() {System.out.println("奔驰奔驰奔驰");}}

一个工厂类:

public class CarFactory {public static Car createCar(String carType) {Car car = null;/*switch (carType) {case "BMW":car = new BMW();break;case "Benz":car = new Benz();break;case "Nissan":car = new Nissan();break;}*/try {car=(Car) Class.forName("myDesignPattern01."+carType).newInstance();} catch (Exception e) {System.out.println("你要的车,么得了");}return  car;}}


客户类,要进行使用汽车了:

public class Client {public static void main(String[] args) {Car car = null;String str = null;Scanner sc = new Scanner(System.in);System.out.println("想买啥车?");while (sc.hasNext()) {str = sc.nextLine();try {car = (Car) CarFactory.createCar(str);car.printBrand();} catch (Exception e) {System.out.println("么得这车,你得是打错了");}}}}


运行结果:


一开始用的swich语句,后来想了想,如果要添加别的车型的话,还要改swich语句。

那么反射可以直接通过类名找到类,就用了反射。

不过缺点是这种写法类名要通过字符串得到就要加上包名,那么后面修改的话也是一个问题。

优点是只要是在myDesignPattern01这个包下添加车型,就可以直接添加,不用修改任何程序。

当然真正开发的时候应该不会采用这样的设计方法,这就是我自己写着摸索的2333333!

阅读全文
0 0
原创粉丝点击