接口的设计模式——工厂设计模式(Factory、重点)

死背以下内容理不理解再说。要通过大量代码才能彻底懂


范例:在进行类设计的时候,要求,首先需要有接口,而后接口要通过子类才可以进行对象的实例化处理。

范例:传统代码开发

interface IFruit{//定义一个描述水果的操作
	public void eat();//吃水果
}
class Apple implements IFruit{
	public void eat() {
		System.out.println("削皮吃苹果!");
	}
}

public class TestDemo {
public static void main(String args[]) {
	//子类为接口进行对象的实例化处理
IFruit fruit =new Apple();
fruit.eat(); 
}
}

此时的程序实现的关键是:“IFruit fruit=new Apple();”,

如果没有此语句,那么接口对象将无法进行实例化的操作处理。

但是此时最大的败笔也在此。

主方法是一个客户端,那么对于程序的修改不应该影响到客户端。

   

Java实现可移植性的关键是JVM,也就是说所有的程序是在JVM上执行,而不同的操作系统中有匹配的JVM,那么相当于:程序——》JVM——》操作系统

这个时候new是整个开发过程之中最大的耦合元凶。而我们在开发之中要想进行解耦合的关键就在于要引入一个第三方, 所以这个类可以使用Factory来描述。

范例:通过Factory设计来描述

  

注意:此代码在eclipse工具中是无法实现想要的结果,建议使用doc 使用java TestDemo apple or java TestDemo orange来实现

interface IFruit{//定义一个描述水果的操作
	public void eat();//吃水果
}
class Factory{
	public static IFruit getInstance(String className) {
		if("apple".equals(className)) {
			return new Apple();
		}
		if("orange".equals(className)) {
			return new Orange();
		}
		return null;
	}
}
class Apple implements IFruit{
	public void eat() {
		System.out.println("削皮吃苹果!");
	}
}
class Orange implements IFruit{
	public void eat() {
		System.out.println("剥皮吃橘子!");
	}
}

public class TestDemo {
public static void main(String args[]) {
	//子类为接口进行对象的实例化处理
	if(args.length!=1) {
		System.out.println("对不起,程序执行错误,正确的格式: java TestDemo 类名称");
		System.exit(1);//退出程序执行
	}
IFruit fruit =Factory.getInstance(args[0]);//工厂类取得对象
fruit.eat();
} 
}

当更换使用的IFruit子类的时候主方法没有任何的变化就可以实现了子类的变更,这样的设计模式就称为工厂设计模式。

总结:以后只要是你编写的接口如果要想取得接口的实例化对象,第一反应:写工厂类。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值