先看實例,很簡單。UML圖也懶得畫了,更喜歡CRC卡片的方式。
一、簡單工廠模式
1. com.cleversoft.designpatterns.simplefactory.Motor.java
- package com.cleversoft.designpatterns.simplefactory;
- public interface Motor {
- public void run();
- }
2. com.cleversoft.designpatterns.simplefactory.Bus.java
- package com.cleversoft.designpatterns.simplefactory;
- public class Bus implements Motor {
- public Bus() {
- }
- public void run() {
- System.out.println("This is a Bus!");
- }
- }
3. com.cleversoft.designpatterns.simplefactory.Car.java
- package com.cleversoft.designpatterns.simplefactory;
- public class Car implements Motor{
- public Car(){
- }
- public void run(){
- System.out.println("This is a Car!");
- }
- }
4. com.cleversoft.designpatterns.simplefactory.MotorFactory.java
- package com.cleversoft.designpatterns.simplefactory;
- public class MotorFactory {
- public static Motor factory(String which) {
- if (which.equalsIgnoreCase("bus")) {
- return new Bus();
- } else if (which.equalsIgnoreCase("car")) {
- return new Car();
- }
- return null;
- }
- }
5. com.cleversoft.designpatterns.simplefactory.Main.java
- package com.cleversoft.designpatterns.simplefactory;
- public class Main {
- /** *//**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- MotorFactory mf = new MotorFactory();
- Motor m = mf.factory("bus");
- m.run();
- }
- }
二、工廠方法模式
1. com.cleversoft.designpatterns.factorymethod.MotorFactory.java
- package com.cleversoft.designpatterns.factorymethod;
- public interface MotorFactory {
- public Motor factory();
- }
- package com.cleversoft.designpatterns.factorymethod;
- public interface Motor {
- public void run();
- }
3. com.cleversoft.designpatterns.factorymethod.BusFactory.java
- package com.cleversoft.designpatterns.factorymethod;
- public class BusFactory implements MotorFactory{
- public Motor factory(){
- return new Bus();
- }
- }
4. com.cleversoft.designpatterns.factorymethod.CarFactory.java
- package com.cleversoft.designpatterns.factorymethod;
- public class CarFactory implements MotorFactory{
- public Motor factory(){
- return new Car();
- }
- }
5. com.cleversoft.designpatterns.factorymethod.Bus.java
- package com.cleversoft.designpatterns.factorymethod;
- public class Bus implements Motor {
- public Bus() {
- }
- public void run() {
- System.out.println("This is a Bus!");
- }
- }
6. com.cleversoft.designpatterns.factorymethod.Car.java
- package com.cleversoft.designpatterns.factorymethod;
- public class Car implements Motor {
- public Car() {
- }
- public void run() {
- System.out.println("This is a Car!");
- }
- }
7. com.cleversoft.designpatterns.factorymethod.Main.java
- package com.cleversoft.designpatterns.factorymethod;
- public class Main {
- /** *//**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- MotorFactory mf = new BusFactory();
- Motor m = mf.factory();
- m.run();
- }
- }