zoukankan      html  css  js  c++  java
  • 设计模式一工厂模式

    工厂方法模式的主要优点有:
    解决简单工厂模式的缺点:
    工厂方法模式把具体产品的创建推迟到工厂类的子类(具体工厂)中,
    此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,
    这样工厂方法模式在添加新产品的时候就不修改工厂类逻辑而是添加新的工厂子类,
    符合开放封闭原则,克服了简单工厂模式中缺点

    缺点是:每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。


    抽象工厂(Abstract Factory):
    提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
    具体工厂(ConcreteFactory):
    主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
    抽象产品(Product):
    定义了产品的规范,描述了产品的主要特性和功能。
    具体产品(ConcreteProduct):
    实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
     1 //外界通过调用具体工厂类的方法,从而创建不同具体产品类的实例
     2 public class Factory {
     3     public static void main(String[] args) {
     4         Factory0 factory1 = new Factory1();
     5         Produce manufacture1 = factory1.Manufacture();
     6         manufacture1.show();
     7         Factory0 factory2 = new Factory2();
     8         Produce manufacture2 = factory2.Manufacture();
     9         manufacture2.show();
    10     }
    11 }
    12 
    13 //抽象产品
    14 abstract class Produce {
    15     public abstract void show();
    16 }
    17 
    18 //具体产品
    19 class Produce1 extends Produce {
    20     @Override
    21     public void show() {
    22         System.out.println("产品一");
    23     }
    24 }
    25 
    26 class Produce2 extends Produce {
    27     @Override
    28     public void show() {
    29         System.out.println("产品二");
    30     }
    31 }
    32 
    33 //抽象工厂
    34 abstract class Factory0 {
    35     public abstract Produce Manufacture();
    36 }
    37 
    38 //具体工厂
    39 class Factory1 extends Factory0 {
    40 
    41     @Override
    42     public Produce Manufacture() {
    43         return new Produce1();
    44     }
    45 }
    46 
    47 class Factory2 extends Factory0 {
    48 
    49     @Override
    50     public Produce Manufacture() {
    51         return new Produce2();
    52     }
    53 }
  • 相关阅读:
    python+selenium自动化软件测试(第7章):Page Object模式
    python+selenium自动化软件测试(第6章):selenium phantomjs页面解析使用
    python+selenium自动化软件测试(第5章):Selenium Gird
    python+selenium自动化软件测试(第3章):unittest
    python+selenium自动化软件测试(第2章):WebDriver API
    python+selenium自动化软件测试(第1章):环境搭建,你也可以直接用Anaconda!
    js 躲避球游戏
    ES6基础教程,常见特性随笔
    JS 回到顶端 back to top
    单Js 的重力游戏开发
  • 原文地址:https://www.cnblogs.com/loveer/p/11279347.html
Copyright © 2011-2022 走看看