惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
I
InfoQ
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
WordPress大学
WordPress大学
B
Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
博客园 - 聂微东
Jina AI
Jina AI

博客园 - 走到天亮

设计模式之“适配器模式” 设计模式之“门面模式” 设计模式之“抽象工厂模式” 设计模式之“单例模式” 设计模式之“代理模式” 《C# to IL》第三章 选择和循环 《C# to IL》第二章 IL基础 《C# to IL》第一章 IL入门 淘宝下单高并发解决方案(转载) java linux 配置环境 Spring Aop之(二)--Aop 切面声明和通知 Spring aop Spring RegexpMethodPointcutAdvisor和NameMatchMethodPointcutAdvisor Spring BeanNameAutoProxyCreator 与 ProxyFactoryBean CentOS的IP配置专题 Spring Bean属性绑定Bean返回值 【阿里的感悟】质量该如何做? .(转载) Ubuntu开机自动启动script(2) Ubuntu开机自动启动Script
设计模式之“策略模式”
走到天亮 · 2013-07-17 · via 博客园 - 走到天亮

策略模式:
策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可相互替换。该模式可使得算法能独立于使用它的客户而变化。

通用类图:

实例:

商品折扣计算

 class Program
    {
        static void Main(string[] args)
        {
            ShopCart sc = new ShopCart(new ProudctA());
            sc.doSomthing();
            sc = new ShopCart(new ProudctB());
            sc.doSomthing();
        }
    }
    public class ShopCart {
        public IStrategy strategr;
        public ShopCart(IStrategy strategr) {
            this.strategr = strategr;
        }
        public void doSomthing()
        {
            this.strategr.compute();
        }
    }
    public interface IStrategy
    {

         void compute();
    }
    public class ProudctA : IStrategy {

        public void compute()
        {
            Console.WriteLine("商品折扣价100");
        }
    }
    public class ProudctB: IStrategy
    {

        public void compute()
        {
            Console.WriteLine("商品折扣价200");
        }
    }