• ComponentPattern (组合模式)


    import java.util.LinkedList;
    
    /**
     * 组合模式
     * 
     * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店,你到每个店去理发都是等同的
     *         那么假设不用组合模式,你到10家店理发,你需要知道这10家店或者是知道他们的父类店
     *         然后new10次来统计消费情况,但是如果用组合模式,你只需要操作根节点就可以了
     */
    public class ComponentPattern {
    /**
     * Component抽象类,该例子中每一个店都相当于一个节点
     *
     */
        abstract class Market {
    
            public abstract void add(Market m);
    
            public abstract void remove(Market m);
    
            public abstract void PayByCard();
        }
        
        public class MarketBranch extends Market{
            
            LinkedList<Market> markets = new LinkedList<Market>();
            
            @Override
            public void add(Market m) {
                markets.add(m);
            }
    
            @Override
            public void remove(Market m) {
                markets.remove(m);
            }
    
            @Override
            public void PayByCard() {
                for(Market market:markets){
                    market.PayByCard();
                }
            }
        }
        
        public class MarketJoin extends Market{
            
            @Override
            public void add(Market m) {
                // TODO Auto-generated method stub
                //子店不需要此功能
                
            }
    
            @Override
            public void remove(Market m) {
                // TODO Auto-generated method stub
                //子店不需要此功能
            }
    
            @Override
            public void PayByCard() {
                System.out.println("payByCard");
            }
        }
        
        public void test(){
            Market marketBranch = new MarketBranch(); 
            Market marketJoin = new MarketJoin();
            marketBranch.add(marketBranch);
            marketBranch.add(marketJoin);
            marketBranch.PayByCard();
        }
        
    }
  • 相关阅读:
    Python——装饰器
    黑马Python——学习之前
    遇到的问题及解决办法——待完善
    springboot @Slf4j log 日志配置 控制台输出彩色日志并过滤DEBUG日志
    常用linux指令
    Spring Security内置 Filter 全解析
    jquery attr与prop区别。
    instanceof不能跨框架判定数组类型,必须用Array.isArray方法,实例
    font-size:em单位
    通过简单的css样式让按钮居中显示
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6229913.html
Copyright © 2020-2023  润新知