zoukankan      html  css  js  c++  java
  • 设计模式:简单工厂

    简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。
    
             简单工厂实例化的类具有相同的接口,在类有限并且基本不需要扩展时,可以使用简单工厂。例如,数据库连接对象,常用的数据库类类可以预知,则使用简单工厂。 
              采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类型,则需要修改工厂,不符合OCP的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。
    
    namespace DP 
    { 
        class Client 
        { 
            static void Main(string[] args) 
            { 
                // 避免了这里对Sugar类的直接依赖 
                IFood food = FoodShop.Sale("Sugar"); 
              food.Eat(); 
          
                // 避免了这里对Bread类的直接依赖 
                food = FoodShop.Sale("Bread"); 
               food.Eat(); 
               Console.Read(); 
            } 
        } 
          
        public interface IFood 
        { 
            void Eat(); 
        } 
          
        public class Bread : IFood 
        { 
          
            public void Eat() 
            { 
                Console.WriteLine("Bread is delicious!"); 
            } 
        } 
          
        public class Sugar : IFood 
        { 
          
            public void Eat() 
            { 
                Console.WriteLine("Sugar is delicious!"); 
            } 
        } 
          
        public class FoodShop 
        { 
            public static IFood Sale(string foodName) 
            { 
                switch (foodName) 
                { 
                    case "Sugar": 
                        return new Sugar();                     
                    case "Bread": 
                        return new Bread(); 
                    default: 
                        throw new ArgumentException();                     
                } 
            } 
        }     
    } 
  • 相关阅读:
    三角函数图像平移后重合对称
    三角恒等式的证明
    三角函数给值求角
    三角方程的解法
    空间中线面位置关系的证明思路
    实时会议
    LATEX 公式总结
    三维重建的应用
    会议
    计算机图形学学习笔记
  • 原文地址:https://www.cnblogs.com/profession/p/5073057.html
Copyright © 2011-2022 走看看