java设计思想




public class A {
	public void t1(){
		
	}
	
	public void t2(){
		
	}
}


//B类想同时拥有: t1(),t2(),t3(),t4(),t5(),t6()的功能
//相比B类更好的设计方式: 优先对象组合而非继承
public class B extends A{
	public void t3(){
		
	}
	
	public void t4(){
		
	}
}


public class B2 {
	// 组合方式1--省内存,速度慢
	public void t1() {
		new A().t1();
	}

	public void t2() {
		new A().t2();
	}

	public void t3() {

	}

	public void t4() {

	}
	
	//组合方式2--c的生命周期长(占用内存时间长),但速度快
	private C c=new C();
	public void t5(){
		c.t5();
	}
	public void t6(){
		c.t6();
	}
 
}


public class C {
	public void t5(){
		
	}
	
	public void t6(){
		
	}
}
public interface Api {
	public void t1();
}



public class Impl1 implements Api{
	@Override
	public void t1() {
		System.out.println("1111111111111111");
	}
}

public class Impl2 implements Api{
	@Override
	public void t1() {
		System.out.println("2222222222222");
	}
}

public class Client {
  public static void main(String[] args) throws Exception {
	Class c=Class.forName("cn.hncu.design.two.Impl2");
	Api api=(Api) c.newInstance();
	api.t1();
}
} 

//同时与模块Client1,Client2交互的通用接口,,,这种设计不好,建议采用分成两个专用接口来做
public interface Api {
	//模块Client1访问的方法
		public abstract void t1();
		public abstract void t2();
		
		//模块Client2访问的方法
		public abstract void t3();
		public abstract void t4();
}

//与Client1模块交互的专用接口
public interface Api1 {
	public abstract void t1();
	public abstract void t2();
}

//与Client2模块交互的专用接口
public interface Api2 {
	public abstract void t3();
	  public abstract void t4();
}

public class Client1 {
	public static void main(String[] args) {
		Api api = null;// 实现项目中,这里用类反射或工厂类创建出一个实现类对象
		api.t1();
		api.t2();
		api.t3();
		api.t4();

		// 专用接口的调用方式
		Api1 aapi = null;
		aapi.t1();
		aapi.t2();
		Api2 aapi2 = null;
		aapi2.t3();
		aapi2.t4();
	}
}

public class B {
	/*
	public void t(A a){
		System.out.println( a.t1() );
	}
	*/
	
	//在依赖不是很严重的地方,可以考虑剪断依赖链---自己实现依赖对方获得的功能
	public String t1(){
		return "111111111";
	}
}



public class A {
	  public String t1(){
		   return "1111111111111";
	   }
}


public class B {
	/*
	public void t(A a){
		System.out.println( a.t1() );
	}
	*/
	
	//在依赖不是很严重的地方,可以考虑剪断依赖链---自己实现依赖对方获得的功能
	public String t1(){
		return "111111111";
	}
}


猜你喜欢

转载自blog.csdn.net/lx678111/article/details/79921864