我想“一切从实例开始”是我最易接受的方式。网上有太多的理论和经验总结,于已而言,吸收亦成乐事。
先看实例,很简单。UML图也懒得画了,更喜欢CRC卡片的方式。
一、简单工厂模式
1. com.cleversoft.designpatterns.simplefactory.Motor.java
2. com.cleversoft.designpatterns.factorymethod.Motor.java
先看实例,很简单。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();
- }
- }