设计模式01-工厂设计模式

工厂设计模式:适合内容扩展用

创建AnimalFatory :
首先设置个范围最大的接口名如:动物,交通工具等等:这里来生产动物,为什么先不管

public interface AnimalFatory {
	eat.geteat();
	run.getrun();
}

做什么:eat,run
然后再设置个抽象类,表明动物工厂要生产的东西,但不说怎么生产:生产吃饭的动物和跑步的动物

public abstract class eat{
	public abstract void whoeat();
}

跑步的动物

public abstract class run{
	public abstract void getrun();
}

怎么做:Cateat ,Dogrun
这里就是来描述怎么做上面说的东西了,自然要继承上面所要做的东西
猫怎么吃饭

public class Cateat extends eat{
	@Override
	public void whoeat() {
		System.out.println("猫吃饭");
	}
}

狗怎么跑步

public class Dogrun extends run{

	@Override
	public void getrun() {
		System.out.println("狗跑步");
		
	}
}

开始正式生产过程:AnimalFatoryProduct
先拿到工厂决定生产的对象,再创建生产具体对象的过程(new Cateat())

public class AnimalFatoryProduct implements AnimalFatory {
	@Override
	public eat geteat() {
		// TODO Auto-generated method stub
		return new Cateat();
	}

	@Override
	public run getrun() {
		// TODO Auto-generated method stub
		return new Dogrun();
	}
}

以上都完备了,就可以让程序照什么的步骤来一步步生产了:AnimalProdure

public class AnimalProdure {

	public static void main(String[] args) {
		//新建工厂,向上转型为抽象工厂(为什么向上转型:https://blog.csdn.net/guchenjun789/article/details/81055317),工厂内有下一步的方法
		AnimalFatory Animal = new AnimalFatoryProduct();
	
		//调用下一步骤的方法,调用getcat方法生产cateat 对象,由于cateat对象继承于eat,则可以向上转型为eat对象
		eat cats = Animal.geteat();
		
		//eat对象有个geteat方法,则开始实施最终方法(猫对象的最终输出动作:猫吃饭)
		cats.whoeat();
		
		//同上
		dog dog = Animal.getdag();
		dog.run();	
	}
}

以上假如是你第一次想要的程序,接着你要扩展功能怎么办,想要吃的动物不是猫,是鸟。这个时候你不用更改上面程序。只需要新建个类继承cateat的抽象类:

public class beardeatfish extends eat {
	@Override
	public void whoeat() {
		System.out.println("鸟吃饭");
	}
}

以上,吃的对象又扩展了一个,然后再创建个生产线,继承工厂

public class OrtherAnimalFactoryProduct implements AnimalFatory {
	@Override
	public eat geteat() {
		// TODO Auto-generated method stub
		return new beardeatfish ();
	}
}

生产

AnimalFatory otherAnimal = new OrtherAnimalFactoryProduct();
eat beardeatfishs  =  otherAnimal .geteat();
beardeatfishs  .whoeat();

这样,就是所谓的创建一个工厂,里面可以多个生产线来创建同类但不同尺寸或不同花样的产品
当然,你甚至可以把接口定位地球,然后生产任何东西(一般只是说说,这样搞估计就生成的东西范围毕竟大,不好掌控)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值