接口实际应用——工厂设计模式(Factory)和代理设计模式(Proxy)

工厂设计模式(Factory)

工厂设计模式是Java开发中使用最多的一种设计模式

interface Fruit{
	public void eat();	//接口只能有抽象方法,所以abstract可以省略
}
class Apple implements Fruit{
	public void eat(){
		System.out.println("吃苹果。");
	}
}
class Orange implements Fruit{
	public void eat(){
		System.out.println("吃橘子。");
	}
}
public class Main {  
      public static void main(String[] args) {  
    	  Fruit f = new Apple();	//实例化接口对象
    	  f.eat();
      }
}
运行结果:吃苹果
    对于程序来说主方法(或主类的一个客户端),客户端的操作越简单越好,但是本程序的问题是,客户端中,一个接口和一个固定的子类绑在一起了(Fruit f = new Apple();)
    本程序最大的问题是耦合,在主方法中一个接口和一个子类紧密耦合在一起,这种方法可以简单理解成“A→B模式”,为了便于维护,需要在中间加入一个过渡使其变成“A→C→B模式”,这样B、C的改变不会影响到A实现程序的可移植性。


改变程序:

interface Fruit{
	public void eat();	
}
class Apple implements Fruit{
	public void eat(){
		System.out.println("吃苹果。");
	}
}
class Orange implements Fruit{
	public void eat(){
		System.out.println("吃橘子。");
	}
}
class Factory{		//过渡端
	public static Fruit getInstance(String className){
		if("apple".equals(className)){
			return new Apple();
		}
		if("Orange".equals(className)){
			return new Orange();
		}
		return null;
	}
}
public class Main {  
      public static void main(String[] args) {  
    	  Fruit f = Factory.getInstance("apple");	
    	  f.eat();
      }
} 
    此时,客户端不在和一个具体的子类耦合,计算增加新的子类,也只需要修改Factory类即可。


代理设计模式(Proxy)

    代理设计模式,就是指一个代理主题来操作真实主题。真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。(类似于代理上网,客户通过网络代理连接网络)

interface Network{			//定义Network接口
	public void browse();	//定义浏览的方法
}
class Real implements Network{		//真实的上网操作
	public void browse(){
		System.out.println("上网浏览信息");
	}
}
class Proxy implements Network{		//代理上网
	private Network network;
	public Proxy(Network network){	//设置代理的真实操作
		this.network = network;		//设置代理的类
	}
	public void check(){
		System.out.println("检查客户是否合法");
	}
	public void browse(){
		this.check();
		this.network.browse();		//调用真实上网操作
	}
}
public class Main{
	public static void main(String args[]){
		Network net = null;
		net = new Proxy(new Real());
		net.browse();		
	}
}
真实主题实现类(Real)完成的只是上网的最基本功能,而代理主题(Proxy)要做的比真实主题更多的相关业务操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值