java——模板、复合

设计模式之模板设计模式:

每次使用的时候只需要写一个子类来继承他的方法即可

 * 模板设计模式的设计思想:程序由确定的部分和不确定的部分组成,这时可以把不确定的部分抽象出来,

 * 然后对外开放一个可以访问的方式在使用的时候可以由其子类来继承父类实现重写抽象方法,来完成不确定的部分

例子:计算一个程序的执行时间

public static void main(String[] args) 
	{
		GetTime getTime = new SubTime();
		getTime.getTime();
//		new GetTime().getTime();
	}
}
abstract class GetTime
{
	public void getTime() 
	{
		//获取系统当前时间
		long currentTime = System.currentTimeMillis();
		//随便执行一个程序,计算循环的执行时间
		fun();//将要执行的程序抽取出来封装成方法后,调用
		//获取程序执行完毕的当前时间
		long finishTime = System.currentTimeMillis();
		System.out.println("程序执行时间:"+(finishTime-currentTime)+"毫秒");
	}
	//把要执行的程序抽取成方法
	//定义成抽象方法,强制子类去重写这个方法
	public abstract void fun();
}
//使用继承
class SubTime extends GetTime
{
	@Override
	public void fun() {
		// TODO Auto-generated method stub
        temp();
	}
	public void temp() 
	{
		for (int i = 0; i < 20000; i++) 
		{
			System.out.println(i);
		}
	}

 复合:

一个类中有另一个类中的对象作为成员变量

例如:1.人类   吃 
 *  2.男人类 姓名 性别  有女朋友 吃肉 介绍女朋友是谁
 *  3.女人类 姓名 性别  有男朋友 吃素 介绍男朋友是谁

 *  4.男人挣钱给女朋友花(接口实现)

	public static void main(String[] args) 
	{
      Man man = new Man("张三", "男");
      Woman woman = new Woman("李四", "女");
      man.setWoman(woman);
      man.sayHi();
      woman.setMan(man);
      woman.sayHi();
      //通过男人类的对象获取女人类的对象
      Woman woman1 = man.getWoman();
      //用获取到的对象来调取该对象中的方法,可以调用所有的方法
      woman1.zhengRong("鼻子");
      man.makeMoney();
      woman1.getMan().makeMoney();
	}
	
   private String name;
   private String gender;
   public abstract void eat();//抽象方法
   public Person(String name,String gender) 
   {
	this.gender = gender;
	this.name = name;
   }
   //set/get方法
   public void setName(String name) 
   {
	this.name = name;
   }
   public String getName() 
   {
	return this.name;
   }
   public void setGender(String gender) 
   {
	this.gender = gender;
   }
   public String getGender() 
   {
	return this.gender;
   }
}
class Man extends Person implements MakeMoney
{
	//定义一个成员变量,是女人类的对象
	Woman woman;
	public Man(String name,String gender)
	{
        super(name, gender);
	}
	//set/get方法
	public void setWoman(Woman woman) 
	{
		this.woman = woman;
	}
	public Woman getWoman()
	{
		return this.woman;
	}
	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("吃肉");
	}
	public void sayHi() 
	{
		System.out.println("我是"+getName()+",这我女朋友"+woman.getName());
	}
	@Override
	public void makeMoney() {
		// TODO Auto-generated method stub
		System.out.println("我"+getName()+"挣钱,你"+woman.getName()+"来花");
	}
}
class Woman extends Person
{
	private Man man;
	//set/get方法
	public void setMan(Man man) 
	{
		this.man = man;
	}
	public Man getMan() 
	{
		return this.man;
	}
	public  Woman(String name, String gender) 
	{
		super(name, gender);
	} 
	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("吃素");
	}
	public void sayHi() 
	{
		System.out.println("男朋友"+this.man.getName());
	}
	public void zhengRong(String body)  //整容
	{
		System.out.println("我是"+this.getName()+",我要整"+body);
		sayHi();
	}
	
}
interface MakeMoney//接口
{
	public abstract void makeMoney();
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值