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

    工厂模式:

    作用:实现了创建者调用者分离

    详细分类:简单工厂模式,工厂方法模式,抽象工厂模式

    OOP七大原则:

    • 开闭原则:一个软件的实体应当对扩展开放,对修改关闭
    • 依赖倒转原则:针对接口编程,不要针对实现编程
    • 迪米特法则:只与你直接朋友通信,而避免和陌生人通信

    核心本质:

    实例化对象不使用new,用工厂方法代替

    将选择实现类,创建对象统一管理起来和控制,从而将调用者跟我们实现类解耦。

    三种模式:

    简单工厂模式:(静态工厂)

    用来生产同一个等级结构中的任意的产品(对于增加新的产品,需要球盖已经有的代码)

    工厂方法模式:

    用于生产同一个等级结构中固有的产品(支持增加任意产品)

    抽象工厂模式:

    围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂

    案例:

    简单工厂:

    接口:

    Car:

    public interface Car {
        //方法
        void name();
    }
    

    具体的品牌Car:

    奥迪

    public class Audi implements Car{
        @Override
        public void name() {
            System.out.println("奥迪!");
        }
    }
    
    

    特斯拉:

    public class Tesla implements Car{
        @Override
        public void name() {
            System.out.println("特斯拉!");
        }
    }
    
    

    车工厂CarFactory

    //静态工厂模式
    //增加一个新的产品,如果你不修改代码,做不到!
    
    //开闭原则
    public class CarFactory {
    
        public static Car getCar(String car){
            if(car.equals("奥迪!")){
                return new Audi();
            }else if (car.equals("特斯拉!")){
               return new Tesla();
            }else {
                return null;
            }
        }
    
        //方式二:
        public static  Car getAudi(){
    
            return new Audi();
        }
    
        public static Car getTesla(){
            return new Tesla();
        }
    }
    

    消费者:

    public class Consumer {
    
        public static void main(String[] args) {
    
            Car audi = new Audi();
            Car tesla = new Tesla();
            audi.name();
            tesla.name();
    
        }
    }
    
    结果:
    奥迪!
    特斯拉!
    

    工厂方法模式:

    Car:

    public interface Car {
        //方法
        void name();
    }
    

    CarFactory:

    public interface CarFactory {   
    Car getcar();
    }
    

    Audi:

    public class Audi implements Car {
        @Override
        public void name() {
            System.out.println("奥迪!");
        }
    }
    
    

    AudiFactory:

    public class AudiFactory implements CarFactory {
    
        @Override
        public Car getcar() {
            return new Audi();
        }
    }
    
    

    Tesla:

    public class Tesla implements Car {
        @Override
        public void name() {
            System.out.println("特斯拉!");
        }
    }
    
    

    TelaFactory

    public class TeslaFactory implements CarFactory {
    
        @Override
        public Car getcar() {
            return new Tesla();
        }
    }
    
    

    Consumer:

    public class Consumer {
    
        public static void main(String[] args) {
            Car tesla = new TeslaFactory().getcar();
            Car audi = new AudiFactory().getcar();
            Car getcar = new ModikeFactory().getcar();
    
            tesla.name();
            audi.name();
            getcar.name();
    
    
        }
    
        /*
        * 简单工厂模式跟工厂方法模式对比
        * 结构那个更不复杂:简单工厂
        * 代码那个更不复杂:简单工厂
        * 编程更不复杂度:简单工厂
        * 管理上的更不复杂度:简单工厂
        *
        * 根据设计的原则:工厂方法模式!
        * 根据业务的原则:简单工厂模式!
        *
        * */
    }
    
    
    
  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/jinronga/p/12753897.html
Copyright © 2011-2022 走看看