装饰模式理解

package 装饰模式;


// 核心战术 


public abstract class MainTactics {
	
	// 进攻  
    public  abstract  void   attack();  
	
    // 是否成功 
	public  abstract  void   success();
    

}



package 装饰模式;

//核心业务类 
public class CBATactics extends MainTactics {

	@Override
	public void attack() {
		 
		System.out.println("战术:   进攻内线......");

	}
	
	 
	@Override
	public void success() {
		 
		System.out.println("成功80%");
		
	}

}

package 装饰模式;

/**
 *    通过这个类来进行 对原始类的一个扩展, 可以即插即用扩展业务感觉。  需要扩展其中的一个业务的时候, 只要继承这个类就可以了。
 *    
 *    不会对原来的有什么影响。 直接扩展,处理业务。
 * 
 * 
 * ***/
public abstract class TacticsList extends MainTactics {

	private MainTactics tactics;

	public TacticsList(MainTactics tactics) {
		this.tactics = tactics;
	}

	public void attack() {

		this.tactics.attack();

	}

	@Override
	public void success() {

		this.tactics.success();

	}

}

package 装饰模式;

public class TacticsOne extends TacticsList{

	public TacticsOne(MainTactics tactics) {
		super(tactics);
	}

	
	public void  attackOne(){
		
		System.out.println("战术执行,先突破,然后分球给内线");
	}
	
	
    @Override
	public void attack() {
    	      super.attack();
          this.attackOne();
		  
	} 
	
	
	
	
	
}

package 装饰模式;

public class TacticsTwo extends TacticsList {

	public TacticsTwo(MainTactics tactics) {
		super(tactics);
	}

	public void attackTwo() {
		
		System.out.println("内线网外传,直接飙3分");
	}

	@Override
	public void attack() {
		super.attack();
		this.attackTwo();
	}

}

package 装饰模式;

 



public class Main {

	public static void main(String[] args) {
		 
		
		//  下面添加另外一种进攻手段。 (扩展一种另外的业务处理)

		MainTactics  tactics = new CBATactics(); // 最原始的,最核心业务 
		
		tactics = new TacticsOne(tactics); // 直接包装  核心业务 , 在原来的基础上直接添加。 同时又对原来的业务没有任何干扰。
		
		tactics = new TacticsTwo(tactics); // 进行再次的包装业务,处理业务。 
		
		tactics.attack();
		
		
	}

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值