设计模式有很多种,这里说一下Static Factory模式,以汽车为例子吧。
图一:设计图
IAuto.java
java 代码
- package designpattern.factorymethod;
- public interface IAuto {
- public void run();
- public void stop();
- }
Car.java
java 代码
- package designpattern.factorymethod;
- public class Car implements IAuto{
- public void run() {
- System.out.println("Car run!");
- }
- public void stop() {
- System.out.println("Car run!");
- }
- }
Truck.java
java 代码
- package designpattern.factorymethod;
- public class Truck implements IAuto{
- public void run() {
- System.out.println("Truck run!");
- }
- public void stop() {
- System.out.println("Truck stop!");
- }
- }
StaticAutoFactory.java
java 代码
- package designpattern.factorymethod;
- public class StaticAutoFactory {
- //can not instance
- private StaticAutoFactory(){}
- //-------------example1--------------------------
- public static IAuto createCar()
- {
- return new Car();
- }
- public static IAuto createTruck()
- {
- return new Truck();
- }
- //--------------example2-------------------------
- public static final int CAR = 0;
- public static final int TRUCK = 1;
- public static IAuto createAuto(int type)
- {
- switch (type)
- {
- case CAR:
- return new Car();
- case TRUCK:
- return new Truck();
- }
- return null;
- }
- }
StaticFactoryClient.java
java 代码
- package designpattern.factorymethod;
- public class StaticFactoryClient {
- /**
- * @param args
- * we needn't care the subclass of IAuto, and how to new them by using static factory.
- */
- public static void main(String[] args) {
- IAuto auto1 = StaticAutoFactory.createCar();
- auto1.run();
- IAuto auto2 = StaticAutoFactory.createAuto(StaticAutoFactory.TRUCK);
- auto2.run();
- }
- }