zoukankan      html  css  js  c++  java
  • 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();
        }
        
    }
  • 相关阅读:
    如何把.ipynb文件转化为.py文件?
    本地浏览器连接服务器端jupyter notebook服务
    本地浏览器下远程连接jupter notebook服务器
    ubuntu下如何设置环境变量
    ubuntu环境变量的设置
    ssh免密登录设置方法
    主机之间ssh免密码登录
    ubuntu与windows互传文件的3种方法
    ubuntu16.04安装Sogou输入法详细步骤
    Ubuntu下安装Sogou输入法
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6229913.html
Copyright © 2011-2022 走看看