• 设计模式——装饰模式


                                 设计模式——装饰模式

      最近在折腾java里的设计模式,在此把学习到的一些收获和一些源码都分享给大家。

      装饰模式 :

           interface (接口):  Person
           实现接口类: Man,Decorator .
           抽象类: Decorator
           子类: ManDecoratorA ,ManDecoratorB .
           测试类:   Test

    这是将要实现的装饰模式里的一些类。同时也把整个代码的思维导图画出来了,画思维导图是为了方便地写代码。

     根据这个图我们来构写代码:

    首先是接口部分
    
    public interface Person {
      
    	 void eat();
    }
    
     // Man类
    public class Man implements Person{
    
    	@Override
    	public void eat() {
    		// TODO 自动生成的方法存根
    		
    		System.out.println("男人在吃东西!");
    	}
    
    }

    public abstract class Decorator implements Person{
     
         protected Person person;   
        
          public void setPerson(Person person){
              this.person = person;
          }
           
           public void eat(){
              person.eat();
              
          }
          
          
        
        
    }

     上面的两个类实现了Person 这个接口。

    public class ManDecoratorA extends Decorator{
     
    	  public void eat(){
    		  
    		  super.eat();   // 继承父类的eat方法 
    		  reEat();
    		  System.out.println("This is " +" ManDecoratorA "+" Class");
    	  }  
    	  
    	  
    	  public void  reEat(){
    		  
    		  System.out.println("又吃了一顿!");
    	  }
    	
    	
    }
    
    public class ManDecoratorB extends Decorator{
       
    	public void eat()
       {
    	  super.eat(); 
    	  System.out.print("------------------------------------");
    	  System.out.print("
    ");
    	  System.out.print("------------------------------------");
    	  System.out.printf("
    ");
    	  System.out.println(" This is "+" ManDecoratorB "+" Class ");
    	  
       }
    	
    	
    }
    

     ManDecoratorA 和 ManDecoratorB 这两个子类继承了父类Decorator eat()方法,setPerson()方法

      测试类:

     

    public class Test {
    	public static void main(String[] args){
    		Man man = new Man();
    		ManDecoratorA md1 = new ManDecoratorA();
    		ManDecoratorB md2 = new ManDecoratorB();
    		 
    	   md1.setPerson(man);
    	   md2.setPerson(md1);
             md2.eat();		
    		
    		
    	}
    
    }
    

     运行结果:

     

  • 相关阅读:
    Oracle重建表索引及手工收集统计信息
    VirtualBox虚拟机安装MSDOS和MINIX2.0.0双系统
    odp.net以及oracle oledb安装
    Oralce常用维护命令
    Sales_item
    IBM MQ Reason 2538(MQRC_HOST_NOT_AVAILABLE) 错误原因一例
    Unable to create the store directory. (Exception from HRESULT: 0x80131468)
    WMS函数组:13.WMS入库BAPI
    WMS函数组:12.批量入库物料移动凭证
    WMS函数组:11.交货单取金额
  • 原文地址:https://www.cnblogs.com/pwhit/p/5467046.html
Copyright © 2020-2023  润新知