文档介绍:封面
Java
设计模式
Java
设计模式
Java设计模式
课程设计参考
7/1/2017
1
第1组工厂方法模式
Java
设计模式
Java
设计模式
2017/7/1
2
工厂方法模式(别名:虚拟构造)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
Mediator Pattern(Another Name: Virtual Constructor)
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
一、概述
Java
设计模式
Java
设计模式
2017/7/1
3
当系统准备为用户提供某个类的子类的实例,又不想让用户代码和该子类形成耦合时,就可以使用工厂方法模式来设计系统。工厂方法模式的关键是在一个接口或抽象类中定义一个抽象方法,该方法返回某个类的子类的实例,该抽象类或接口让其子类或实现该接口的类通过重写这个抽象方法返回某个子类的实例。
二、工厂方法模式的结构与使用
Java
设计模式
Java
设计模式
2017/7/1
4
模式的结构中包括四种角色:
抽象产品(Product)
具体产品(ConcreteProduct)
构造者(Creator)
具体构造者(ConcreteCreator)
Java
设计模式
Java
设计模式
2017/7/1
5
模式的UML类图
Java
设计模式
Java
设计模式
2017/7/1
6
模式的结构的描述与使用
(Product) :
public abstract class PenCore{
String color;
public abstract void writeWord(String s);
}
Java
设计模式
Java
设计模式
2017/7/1
7
模式的结构的描述与使用
(ConcreteProduct)_1 :
public class RedPenCore extends PenCore{
RedPenCore(){
color="红色";
}
public void writeWord(String s){
("写出"+color+"的字:"+s);
}
}
Java
设计模式
Java
设计模式
2017/7/1
8
模式的结构的描述与使用
(ConcreteProduct)_2 :
public class BluePenCore extends PenCore{
BluePenCore(){
color="蓝色";
}
public void writeWord(String s){
("写出"+color+"的字:"+s);
}
}
Java
设计模式
Java
设计模式
2017/7/1
9
模式的结构的描述与使用
(ConcreteProduct)_3:
public class BlackPenCore extends PenCore{
BlackPenCore(){
color="黑色";
}
public void writeWord(String s){
("写出"+color+"的字:"+s);
}
}
Java
设计模式
Java
设计模式
2017/7/1
10
模式的结构的描述与使用
(Creator):
public abstract class BallPen{
BallPen(){
("生产了一只装有"+getPenCore().color+"笔芯的圆珠笔");
}
public abstract PenCore getPenCore(); //工厂方法
}