java设计模式之建造模式

原创 2016年08月30日 14:57:29

=======建造模式和之前的工厂模式咋一听,好像啊! =====我的理解建造模式  相当于java语言里的3D打印========

==== 什么时候使用建造模式

====1. 对象内部结构复杂,如一部分可能是对象,甚至对象的一部分

====2. 对象内部属性相互依赖,如 属性一 和属性二  不能同时有值 等等...

====3. 对象内部使用到的属性,在系统中并不容易得到

======================================代码实现===============================

代码主体

/**
 * @类名 GirlFriend.java
 * @作者  zx
 * @创建日期 2016年8月30日
 * @描述 一个复杂的对象
 * @版本 V 1.0
 */
public class GirlFriend {
	//主键
	private String id;

	//年龄   大于25岁或者小于22岁 每差1岁扣1分
	private int age;

	//地址   国外的加分10   非洲减分10
	private String address;

	//得分  初始分数60
	private int score = 60;

	//其他资料
	private String otherData;

	private GirlFriend(Matchmaker matchmaker) {
		this.id = matchmaker.id;
		this.age = matchmaker.age;
		this.address = matchmaker.address;
		this.score = matchmaker.score;
		this.otherData = matchmaker.otherData;
	}
	
	public static class Matchmaker{
		//主键
		private String id;

		//年龄   大于25岁或者小于22岁 每差1岁扣1分
		private int age;

		//地址   国外的加分10   非洲减分10
		private String address;

		//得分  初始分数60
		private int score = 60;

		//其他资料
		private String otherData;

		public Matchmaker(String id, int age, String address) {
			this.id = id;
			this.age = age;
			this.address = address;
		}
		
		public Matchmaker setOtherData(String otherData){
			this.otherData = otherData;
			return this;
		}
		public GirlFriend init(){
			if(this.age > 25){
				this.score = this.score - (this.age - 25);
			}else if(this.age < 22){
				this.score = this.score - (22 - this.age);
			}
			if(this.address.equals("国外")){
				this.score = this.score + 10;
			}else if(this.address.equals("非洲")){
				this.score = this.score - 10;
			}
			return new GirlFriend(this);
		}
		
	}
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public String getOtherData() {
		return otherData;
	}

	public void setOtherData(String otherData) {
		this.otherData = otherData;
	}

}

测试类

public class TestMain {
	public static void main(String[] args) {
		GirlFriend.Matchmaker matchmaker = new GirlFriend.Matchmaker("001", 18, "国外");
		GirlFriend girlFriend = matchmaker.setOtherData("可爱").init();
		System.out.println(girlFriend.getScore());
	}
}

===================上面代码  私有了 girlfriend的构造方法  防止客户端 直接调用构造方法======

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java创建型设计模式-建造者(3)

#建造者模式定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。参与者Product(产品):表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义的...

建造模式 JAVA开发设计模式

  • 2009-12-01 18:55
  • 15.27MB
  • 下载

Java学习笔记---设计模式之建造者模式(二)

一、引言         关于设计模式已经是一个老话题了,但是作为新手的我每次都看完就忘了,所以这次一定要好好扎实的复习一番。今天继续讲建造者模式的第二讲。 二、设计模式是什么         这里就...

java设计模式中文版

  • 2017-10-10 11:40
  • 322KB
  • 下载

Java设计模式(建造者模式)

Java设计模式(建造者模式)

Java设计模式

  • 2017-09-26 16:20
  • 140KB
  • 下载

java的23种设计模式Demo

  • 2017-09-24 12:22
  • 120KB
  • 下载

java设计模式之建造者模式

本文属于23种设计模式系列。 介绍的是建造者模式。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)