java的几种设计模式

(一)工厂方法模式:
简单工厂模式又称 静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。

在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中
        决定放行那一个方向的车辆向那一个方向流动一样。
              先来看看它的组成:

                 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。

                 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。

                 3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

// 代理模式(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("电视机已打开,正在播放新闻联播节目");
	}
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值