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

推荐订阅源

Google DeepMind News
Google DeepMind News
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
J
Java Code Geeks
D
DataBreaches.Net
B
Blog RSS Feed
D
Docker
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
Y
Y Combinator Blog
A
About on SuperTechFans
V
V2EX
罗磊的独立博客
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
月光博客
月光博客
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
阮一峰的网络日志
阮一峰的网络日志

博客园 - 走到天亮

设计模式之“适配器模式” 设计模式之“门面模式” 设计模式之“抽象工厂模式” 设计模式之“单例模式” 设计模式之“代理模式” 《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");
        }
    }