程序设计模式之抽象工厂模式的简单应用

抽象工厂作业

假设有螺丝和螺母两种产品,其中螺丝有8mm和6mm两种,螺母有8mm和6mm两种,并且8mm螺丝只能配8mm螺母,6mm螺丝只能配6mm螺母,请使用抽象工厂模式模拟该情景

UML图解:
在这里插入图片描述
分析:
抽象产品:螺丝 螺母
具体产品:6mm螺丝 6mm螺母 8mm螺丝 8mm螺母
抽象工厂:一个Factory
具体工厂:6mm工厂 8mm工厂

源代码:

1.抽象产品
建一个名为LM的interface

public interface LM {
	void SizeLM();
}

建一个名为LS的interface

public interface LS {
	void SizeLS();

}

2.抽象工厂
建一个名为Factory的interface

public interface Factory {
	 LS ProduceLS();
	 LM ProduceLM();
}

3.具体工厂
建一个名为SixFactory类继承Factory

public class SixFactory implements Factory{

	public SixLS ProduceLS() {
		return new SixLS();
	}
	public LM ProduceLM() {
		return new SixLM();
	}

}

建一个名为EightFactory类继承Factory

public class EightFactory implements Factory{

	public LS ProduceLS() {
		return new EightLS();
	}
	
	public LM ProduceLM() {
		return new EightLM();
	}

}

4.具体产品
6mm螺丝:SixLS

public class SixLS implements LS{

	@Override
	public void SizeLS() {
		// TODO Auto-generated method stub
		System.out.println("生产6mm螺母");
	}
	
}

6mm螺母:SixLM

public class SixLM implements LM{

	@Override
	public void SizeLM(){
		// TODO Auto-generated method stub
		System.out.println("生产6mm螺母");
	}
	
}

8mm螺丝:EightLS

public class EightLS implements LS{

	@Override
	public void SizeLS() {
		// TODO Auto-generated method stub
		System.out.println("生产8mm螺丝");
	}
	

}

8mm螺母:EightLM

public class EightLM implements LM{

	@Override
	public void SizeLM(){
		// TODO Auto-generated method stub
		System.out.println("生产8mm螺母");
	}
	
}

5.建test类作为程序入口

public class test {
	
	public static void main(String[] args) {
		
		EightFactory ef = new EightFactory();
		ef.ProduceLM().SizeLM();
		ef.ProduceLS().SizeLS();
		
		SixFactory sf = new SixFactory();
		sf.ProduceLM().SizeLM();
		sf.ProduceLS().SizeLS();
	}

}

运行结果:

生产8mm螺母
生产8mm螺丝
生产6mm螺母
生产6mm螺母

——————————————————————————————————
需要源码的私聊我,希望大家能点个赞再走ヾ(≧▽≦*)o
新学的,不保证全对哦O(∩_∩)O

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值