例子 *roduct
public interface Work {
void doWork(); }
ConcreteProduct
public class StudentWork implements Work {
public void doWork() {
System.out.println(\学生*作业!\ } }
public class TeacherWork implements Work {
public void doWork() {
System.out.println(\老师审批作业!\ } }
Creator
public interface IWorkFactory {
Work get*ork(); }
Concre*eCreator
pu*lic class StudentWorkFactory implements IWorkFactory {
4
public Work getWork() {
*eturn new StudentWork(); } }
public class TeacherWorkFactory implements IWorkFactory {
public Work getWork() {
return new TeacherWork(); } }
Test
public class Test {
public static void m*in(Strin*[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().d*Work();
IWorkFactory teacherWorkFactory * new TeacherWorkFactory(); teacherWorkFactory.g*tWork().*oWork(); } }
result
学生做作业! 老师审批作业!
1.1.2 抽象工厂
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
适用性
1.一个系统要独立于它的*品的创建、组合和表示时。
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关的产品对象的设计以便进行联合使用时*
4*当你提供一个产品类库,而只想显示它们*接口而不是实现时。
5
参与者
1.Ab*tractFactory
声明一个创建抽象产品对象的操作接口。
2.ConcreteFactory
实现创建具体产品对象的操作。
*.AbstractProduct
为一类产品对象声明一个接口。
4.ConcreteProdu*t
定义一个将被相应的具体工厂创建的产品*象。 实现*bstractProduct接口。
5.Client
仅使用由AbstractFactory和AbstractProduc*类声明的接口
类图
例子 *bstractFactory
public interface IAn*malFactory {
ICat createCat();
IDog cre*teDog(); }
ConcreteFactory
6
p*blic class BlackAnimalFactory implem*nts IAnimalFactory {
public ICat createCat() { retur* new BlackCat(); }
public IDog createDog() { return new BlackDog(); } }
public class WhiteAnimalFac*ory imp*ements IAnimalFactory {
public ICat createCat() { return new WhiteCat(); }
public IDog cre*teDog() { return new WhiteDog(); } }
Abstrac*Product
public interface ICat {
void eat(); }
public interface IDog {
void eat(); }
Concrete*roduct
public class Black*at implements ICat {
public void eat() {
System.out.println(\ } }
7
相关推荐: