触碰大师们的思想(一)之 简单工厂模式
来源:互联网 发布:淘宝退货运费多少钱 编辑:程序博客网 时间: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
- 触碰大师们的思想(一)之 简单工厂模式
- 触碰大师们的思想(二)之 策略模式
- 简单工厂模式(思想)
- 简单工厂模式(思想)
- 细说工厂模式之简单工厂模式(一)
- 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一):图表库的设计
- 设计模式之工厂设计模式(一:简单工厂模式与工厂方法模式)
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- 工厂三兄弟之简单工厂模式(一)
- 工厂三兄弟之简单工厂模式(一)
- 工厂三兄弟之简单工厂模式(一)
- 工厂三兄弟之简单工厂模式(一)
- 工厂三兄弟之简单工厂模式(一)
- 工厂三兄弟之简单工厂模式(一)
- 工厂模式(一)--简单工厂模式
- 设计模式之工厂模式(一)之简单工厂模式
- 研磨设计模式笔记(一)之简单工厂模式
- C++设计模式之简单工厂模式(一)
- 字符串常见方法(english)
- LeetCode-92. Reverse Linked List II
- Oracle数据库-where, group by, having, order by语句的执行顺序
- 启动三个线程,线程1打印1-5,线程2打印6-10,线程3打印11-15,接着线程1打印16-20……依此类推,打印到72.
- web app
- 触碰大师们的思想(一)之 简单工厂模式
- 安装linux需要做的几件事
- Tunnel Warfare HDU
- 第二课 深度学习的“hello world”——基于mnist数据集的手写数字识别
- 用户免登录功能
- 自定义按钮实现水波点击效果
- Python3中用什么替换commands模块的getstatusoutput()
- 对加载spring的认识spring监听器
- Spring4 + Spring MVC + MyBatis 整合思路