美文网首页
工厂模式

工厂模式

作者: 内卷程序员 | 来源:发表于2022-10-01 22:54 被阅读0次

    工厂模式

    当需要创建一个对象时,只需要告诉工厂类即可,由工厂类去创建对象,调用者无需知道是如何创建的,也不用自己去创建。工厂模式分为简单工厂模式、工厂方法模式、抽象工厂模式

    简单工厂模式

    • 动态生成使用者所需类的对象, 使得各个模块各司其职,降低了系统的耦合性。
    • 扩展性差,违背了开闭原则 新增产品时,需要修改工厂类。
    public abstract class Product {
    }
    
    puclic class A extends Product{
    }
    
    puclic class B  extends Product{
    }
    
    public class Factory {
      public Product create(String type){
        if(type="A"){
          return new A();
        } esle{
         return new B();
        }
      }
    }
    
    public static void main(String[] args) {
        Factory factory = new Factory ();
        Product productA = factory.create("A");
        Product productB = factory.create("B");
     }
    

    工厂方法模式

    • 在简单方法中,我们是只有一个工厂类,由这个工厂类负责动态的创建我们所需要的对象
    • 工厂方法模式中,每个对象都有自己的工厂,新增产品时,只需要扩展一个对应新的子工厂类即可
    public abstract class Product {
    }
    
    puclic class A extends Product{
    }
    
    puclic class B  extends Product{
    }
    
    public class FactoryA {
      public Product create(){
        return new A();
      }
    }
    
    public class FactoryB {
      public Product create(){
        return new B();
      }
    }
     
    public static void main(String[] args) {
        Product productA = new FactoryA ().create();
        Product productB = new FactoryB ().create("B");
     }
    

    抽象工厂模式

    • 工厂方法模式针对的某一种产品,而抽象工厂模式可以针对多种产品
    public interface IFactory {
        //创建口罩
        IMask createMask();
        //创建防护服
        IProtectiveSuit createSuit();
    }
    
    public class LowEndFactory implements IFactory {
        @Override
        public IMask createMask() {
            IMask mask =  new LowEndMask();
            // .....
            //  LowEndMask的100行初始化代码
            return mask;
        }
    
        @Override
        public IProtectiveSuit createSuit() {
            IProtectiveSuit suit =  new LowEndProtectiveSuit();
            // .....
            //  LowEndProtectiveSuit的100行初始化代码
            return suit;
        }
    }
    
    public class HighEndFactory implements IFactory {
        @Override
        public IMask createMask() {
            IMask mask =  new HighEndMask();
            // .....
            // HighEndMask的100行初始化代码
            return mask;
        }
    
        @Override
        public IProtectiveSuit createSuit() {
            IProtectiveSuit suit =  new HighEndProtectiveSuit();
            // .....
            //  HighEndProtectiveSuit的100行初始化代码
            return suit;
        }
    }
    

    相关文章

      网友评论

          本文标题:工厂模式

          本文链接:https://www.haomeiwen.com/subject/estkartx.html