zoukankan      html  css  js  c++  java
  • 日报 18/07/22 您的设计模式!终于有时间开写~ ~

    1/24:

    策略模式 strategypattern

     

    先给大家将一种本人自认为简单的设计模式~

    刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
    嘿,还别说,真是解决了大问题,搞到后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
    的。
    先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
    里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序

     

     欧克 上代码

    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 16:54 2018/7/18
     * 星期三
     * practice
     */
    public class BackDoor implements IStrategy {
        @Override
        public void operate() {
            System.out.println("找乔国老帮忙,让吴国太给孙权施压");
        }
    }
    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 16:57 2018/7/18
     * 星期三
     * practice
     */
    public class BlockEnemy implements IStrategy{
    
        @Override
        public void operate() {
            System.out.println("孙夫人断后,阻挡追兵");
        }
    }
    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 16:57 2018/7/18
     * 星期三
     * practice
     * 就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,
     * 还有一个就是扩展性,也就是 OCP 原则,策略类可以继续增加下去,只要修改 Context.java 就可以
     */
    public class Context {
        //构造 要使用妙计了
        private IStrategy strategy;
    
        Context(IStrategy strategy) {
            this.strategy = strategy;
        }
    
        public void operate() {
            this.strategy.operate();
        }
    }
    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 16:56 2018/7/18
     * 星期三
     * practice
     */
    public class GivenGreenLight implements IStrategy {
        @Override
        public void operate() {
            System.out.println("求吴国太开绿灯");
        }
    }
    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 16:31 2018/7/18
     * 星期三
     * practice
     */
    public interface IStrategy {
        void operate();
    
    }
    package designmodel24.strategypattern;
    
    /**
     * 花有重开日人无再少年~
     * 日报~5铁则
     * 17:01 2018/7/18
     * 星期三
     * practice
     */
    public class ZhaoYun {
        public static void main(String[] args) {
            Context context;
            //遇到吴国太的时候拆第一个
            System.out.println(" //遇到吴国太的时候拆第一个");
            context = new Context(new BackDoor());
            context.operate();//拆开执行
            System.out.println("
    
    
    ");
    
    
            //刘备乐不思蜀,拆第二个
            System.out.println("//刘备乐不思蜀,拆第二个");
            context = new Context(new BackDoor());
            context.operate();//执行第二个
            System.out.println("
    
    
    ");
    
    
            //东吴追兵追来,拆第三个
            System.out.println(" //东吴追兵追来,拆第三个");
            context = new Context(new BackDoor());
            context.operate();//执行第三个 孙夫人退兵
            System.out.println("
    
    
    ");
        }
    }
    /*
     * 问题来了:赵云实际不知道是那个策略呀,他只知道拆第一个锦囊,    *而不知道是BackDoor这个妙计,咋办?  似乎这个策略模式已经把计谋名称写出来了    *
     * 错!BackDoor、GivenGreenLight、BlockEnemy只是一个代码,你写成first、second、 third,没人会说你错!    *
     * 策略模式的好处就是:体现了高内聚低耦合的特性呀,缺点嘛,这个那个^……^
     */

     呦西~~~~~ 哪里没看明白的己得留言哈 嘿嘿嘿 博主去配美女打游戏啦

  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/yunfeioliver/p/9349305.html
Copyright © 2011-2022 走看看