(一)工厂方法模式:
简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。
在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中
决定放行那一个方向的车辆向那一个方向流动一样。
// 代理模式(Prosy):为其他对象提供一种代理以控制这个对象的访问。
/*
代理模式说白了就是“真是对象”的代表,
在访问对象时引入一定程度的剪接性,
应为这种间接性可以附加多种用途。
**/
public class test_10
{
public static void main(String[] args)
{
SuperMan man = new SuperMan();
Proxy proxy = new Proxy(man);
proxy.shopping();
}
}
interface Subject//主题
{
public void shopping();
}
// 被代理人
class SuperMan implements Subject
{
private String name;
public void shopping()
{
// 买之前要做大量的评估工作
System.out.println("为媳妇从网上购买进口化妆品,老贵了");
}
}
//代理人
class Proxy implements Subject
{
private Subject target;//被代理人
public Proxy(Subject target)
{
this.target =target;
}
// 实现接口方法
public void shopping()
{
// 代理之前要做的事情
System.out.println("做大量的商品专业评估");
target.shopping();// 被代理人真正的
//代购之后要做的事情
System.out.println("代购之后的客户满意度调查");
}
}
(二)代理模式:
所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
//简单工厂设计模式
//就是不再依赖当前类,自己判断需要哪种了类
public class test_9
{
public static void main(String[] args)
{
/*
耦合,使用者直接使用了具体的类,表示当前类依赖具体类,
这样的话当这个具体类发生变化,使用者将会收到影响
*/
/*
TCLPhone phone = new TClPhone();
phone.working();
*/
//不依赖类;
Work work = Factory.getWork("tv");
work.working();
}
}
class Factory
{
public static Work getWork(String product)
{
if ("phone".equals(product))
{
return new TCLPhone();
}
else if ("tv".equals(product))
{
return new TCLTV();
}
else
{
return null;
}
}
}
interface Work
{
public void working();
}
class TCLPhone implements Work
{
public void working()
{
System.out.println("手机已经开机完毕,可以使用了");
}
}
class TCLTV implements Work
{
public void working()
{
System.out.println("电视机已打开,正在播放新闻联播节目");
}
}