设计模式之工厂模式代码示例

问题:用户希望自己用圆珠笔能使用不同颜色的笔芯
解析:问题比较简单,我们直接进入正题,工厂模式的机构与本问题的对照:1、抽象产品,在本问题中,把笔芯抽象出来;2、具体产品,继承抽象笔芯类,可以有不同颜色的笔芯类;3、构造着,扶着实例化产品的抽象类;4、具体构造者,具体实例化各种抽象产品,本问题中是实例化各种颜色的笔芯。具体代码如下:
package face; //工厂模式
abstract class PenCore{ //笔芯(抽象产品)
	String color;
	public abstract void writeWord(String s);
}
class RedPenCore extends PenCore{ //红色笔芯(具体产品)
	RedPenCore (){
		super.color = "红色";
	}
	@Override
	public void writeWord(String s) {
		System.out.println("写出"+color+"的字:"+s);
	}
}
class BluePenCore extends PenCore{  //蓝色笔芯(具体产品)
	BluePenCore (){
		super.color = "蓝色";
	}
	@Override
	public void writeWord(String s) {
		System.out.println("写出"+color+"的字:"+s);
	}
}
class BlackPenCore extends PenCore{  //黑色笔芯(具体产品)
	BlackPenCore (){
		super.color = "黑色";
	}
	@Override
	public void writeWord(String s) {
		System.out.println("写出"+color+"的字:"+s);
	}
}

abstract class PenCoreCreator{  //抽象的笔芯构造者构造者
      public abstract PenCore getPenCore();
}
class RedCoreCreator extends PenCoreCreator{ //红色笔芯构造者(具体构造者)
	@Override
	public PenCore getPenCore() {
		return new RedPenCore();
	}	
}
class BlueCoreCreator extends PenCoreCreator{ //蓝色笔芯构造者(具体构造者)
	@Override
	public PenCore getPenCore() {
		return new BluePenCore();
	}	
}
class BlackCoreCreator extends PenCoreCreator{  //黑色笔芯构造者(具体构造者)
	@Override
	public PenCore getPenCore() {
		return new BlackPenCore();
	}	
}

class BallPen{ //圆珠笔
	PenCore core;
	public void usePenCore(PenCore core){
		this.core =core;
	}
	public void write(String s){
		core.writeWord(s);
	}
}

public class Demo09 {

	public static void main(String[] args) {
		PenCore penCore;    //笔芯
		PenCoreCreator creator;   //笔芯构造者
		BallPen ballPen =new BallPen();  //圆珠笔实例化
		creator = new RedCoreCreator();   //实例化一个红色笔芯构造者
		penCore = creator .getPenCore();  //返回一个红色笔芯
		ballPen.usePenCore(penCore);   //圆珠笔用这支红色笔芯
		ballPen.write("我的大刀早已饥渴难耐了");  //圆珠笔写出“我的大刀早已饥渴难耐了”
		
		
		creator =new BlueCoreCreator();
		penCore = creator.getPenCore();
		ballPen.usePenCore(penCore);
		ballPen.write("见到你很高兴");
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值