一. 工厂方法(FactoryMethod)
概述:
定义一个用于创建对象的接口, 让子类决定实例化那一个类. FactoryMethod使一个类的实例化延迟到其子类
适用性:
① 当一个类不知道它所必须创建的对象的类的时候
② 带一个类希望由它的子类来指定它所创建的对象的时候
③ 当类将创建对象的职责委托给多个帮助子类中的某一个, 并且你希望将哪一个帮助子类是代理者这一信息局部化的时候
编译的时候都是由接口之间进行操作, 运行的时候都是实现类来完成
public class TestFactoryMethod {
public static void main(String[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory();
studentWorkFactory.getWork().doWork();
IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
teacherWorkFactory.getWork().doWork();
}
}
interface IWork{
void doWork();
}
class StudentWork implements IWork{
@Override
public void doWork() {
System.out.println("学生写作业");
}
}
class TeacherWork implements IWork{
@Override
public void doWork() {
System.out.println("老师批改作业");
}
}
interface IWorkFactory{
IWork getWork();
}
class StudentWorkFactory implements IWorkFactory{
@Override
public IWork getWork() {
return new StudentWork();
}
}
class TeacherWorkFactory implements IWorkFactory{
@Override
public IWork getWork() {
return new TeacherWork();
}
}
二. 代理模式(Proxy)
- 静态代理模式
概述:
为其他对象提供一种代理以控制对这个对象的访问
public class TestProxy {
public static void main(String[] args) {
Proxy proxyObject = new ProxyObject();
proxyObject.action();
}
}
interface Proxy {
void action();
}
// 代理类
class ProxyObject implements Proxy {
Proxy mObj;
public ProxyObject() {
System.out.println(" 代理类创建成功");
// 创建被代理类
mObj = new ProxyImpl();
}
@Override
public void action() {
System.out.println(" 代理类 代码执行 ");
mObj.action();
System.out.println(" 代理类 执行结束");
}
}
// 被代理类
class ProxyImpl implements Proxy {
@Override
public void action() {
System.out.println("----- 被代理类执行开始 -----");
System.out.println("----- 被代理类正在执行 -----");
System.out.println("----- 被代理类执行结束 -----");
}
}