JAVA:组合的使用

22人阅读 评论(0) 收藏 举报
分类:

组合(Composition),java代码复用的一种方法。顾名思义,就是使用多个已有的对象组合为一个功能更加复杂强大的新对象。体现的是整体与部分、拥有的关系。又因为在对象之间,各自的内部细节是不可见的,所以我们也说这种方式的代码复用是黑盒式代码复用。


如下面Bath(洗澡)与Soap(肥皂)的关系,Soap可以是Bath过程的一部分。

class Soap{
	private String s;
	public Soap() {
		// TODO Auto-generated constructor stub
		System.out.println("Soap()");
		s="Constructor";
	}
	public String toString(){
		return s;
	}
}
public class Bath {
	private String s1="happy",s2="happy",s3,s4;
	private Soap castille;
	private int i;
	private float toy;
	public Bath(){
		System.out.println("Inside Bath()");
		s3="Joy";
		toy=3.14f;
		castille=new Soap();
	}
	{i=47;}
	public String toString(){
		if(s4==null)
			s4="Joy";
		return  
				"s1 = "+s1+"\n"+
				"s2 = "+s2+"\n"+
				"s3 = "+s3+"\n"+
				"s4 = "+s4+"\n"+
				"i = "+i+"\n"+
				"toy = "+toy+"\n"+
				"castille = "+castille+"\n";
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Bath x= new Bath();
		System.out.println(x);
	}
}
/* output
Inside Bath()
Soap()
s1 = happy
s2 = happy
s3 = Joy
s4 = Joy
i = 47
toy = 3.14
castille = Constructor
*/
注释:toString(),一般显示输出该类型时会自动调用,每一个非基本类型的对象都有一个toString()方法。Object类的toString方法返回一个包含该类的对象是一个实例的名称字符串的符号` @”和符号进制表示的对象的哈希码。即如果注释掉Soap()的toString方法后,最后一行输出的内容为“castille = thinkinginjava7_.Soap@3d012ddd”,故重写该方法。
查看评论

再看java中的组合(工作中80%的使用模式)

上一篇博客内容是组合的基本应用,有些地方还是比较欠缺的,经过我许久的练习结合各种的实例,最终对组合有了深一层次的认知。 例子:写一个56岁的张思驾驶蓝色45万元的车去具有90人口地址在南京市浦口区的公...
  • PSY_God
  • PSY_God
  • 2017-02-21 09:18:19
  • 511

Java组合与继承之间的选择

组合和继承d
  • u010445301
  • u010445301
  • 2014-06-03 23:42:55
  • 594

Java的组合(持有对象)与继承的区别

组合 继承 持有对象 Adapter设计模式 组合(持有对象)与继承的区别
  • u013905744
  • u013905744
  • 2016-06-24 13:34:40
  • 967

[Java] 组合与继承的区别

组合和继承都允许在新的类中放置子对象,组合是显式地这样做,而继承是隐式地做。 那两者之间的区别是怎样的呢?又该如何选择呢? 很多人对组合理解地还不是很好,所以我们先来理解一下组合: 组合技术通常用...
  • h_meichuan
  • h_meichuan
  • 2016-04-06 21:46:36
  • 1349

java框架组合

表示层:spring mvc 3.1 + annotation      控制层:spring 3.1      持久层:hibernate 3.6 +jdbcTemplate      后台列...
  • wo0123456789wo
  • wo0123456789wo
  • 2015-02-04 12:27:11
  • 356

Java并发编程学习——对象的组合

对象的组合主要介绍一些组合模式,使得一个类更容易成为线程安全的类,在维护这些类时不会无意中破坏类的安全性保证。1.设计线程安全的类设计线程安全类的过程中,需要包含以下三个基本要素: 找出构成对象状态的...
  • setail
  • setail
  • 2016-09-20 07:43:44
  • 875

深入理解Java中的组合和继承

本文转自:http://www.hollischuang.com/archives/1319 Java是一个面向对象的语言。每一个学习过Java的人都知道,封装、继承、多态是面向对象的三个特征。...
  • dc765940174
  • dc765940174
  • 2016-12-26 10:15:54
  • 2896

java最好的框架组合推荐

转自(http://zz563143188.iteye.com/blog/1867767)        qian'zh
  • qingfoo
  • qingfoo
  • 2014-05-19 14:39:42
  • 2570

组合(复用类的一种方式)

一.组合的概念 在新类里简单地创建原有类的对象。我们把这种方法叫作“组合”,因为新类由现有类的对象合并而成。我们只是简单地重复利用代码的功能,而不是采用它的形式。 组合也就是一个类的对象是另外一个...
  • zhuguangzhou
  • zhuguangzhou
  • 2016-08-19 21:54:59
  • 825

Java编程:组合、继承和代理的区别

组合、继承和代理三者的定义:组合:在新类中new 另外一个类的对象,以添加该对象的特性。 继承:从基类继承得到子类,获得基类的特性。 代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部...
  • u014762221
  • u014762221
  • 2016-04-09 21:07:30
  • 1095
    个人资料
    等级:
    访问量: 161
    积分: 113
    排名: 110万+
    文章分类
    文章存档