zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    抽象工厂模式

    一、简介

    定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。

    二、使用场景

    一个对象族有相同约束时可以使用抽象工厂模式。系统中有多于一个的产品线,而每次只使用其中某一产品线时同样可以使用抽象工厂模式。

    三、抽象工厂模式的简单实现

    //抽象工厂类
    public abstract class ComputerFactory{
        public abstract IOs createOs();
        public abstract IDisplay createDisplay();
    
    }
    
    //os相关类
    public interface IOs {
        void os();
    }
    
    public class highVersion implements IOs{
    
        @Override
        public void os() {
            Log.i(TAG, "os: Version 10.15.5");
        }
    }
    
    public class lowVersion implements IOs{
    
        @Override
        public void os() {
            Log.i(TAG, "os: Version 10.10.1");
        }
    }
    
    //display相关类
    public interface IDisplay {
        void display();
    }
    
    public class normalDisplay implements IDisplay{
    
        @Override
        public void display() {
            Log.i(TAG, "display: Display size 13.3");
        }
    }
    
    public class proDisplay implements IDisplay{
    
        @Override
        public void display() {
            Log.i(TAG, "display: Display size 15.4");
        }
    }
    
    //具体工厂类
    public class normalFactory extends ComputerFactory{
    
        @Override
        public IOs createOs() {
            return new lowVersion();
        }
    
        @Override
        public IDisplay createDisplay() {
            return new normalDisplay();
        }
    }
    
     //具体工厂类
    public class proFactory extends ComputerFactory{
    
        @Override
        public IOs createOs() {
            return new highVersion();
        }
    
        @Override
        public IDisplay createDisplay() {
            return new proDisplay();
        }
    }
    
    //测试
    public void Test(){
        ComputerFactory normal=new normalFactory();
        normal.createOs();
        normal.createDisplay();
        
        ComputerFactory pro=new proFactory();
        pro.createOs();
        pro.createDisplay();
    }
    

    上面只有两个具体的工厂类,如果需要增加工厂类那么对应的os和display也需要增加从而导致类的数量徒增这是抽象工厂模式的一个弊端

  • 相关阅读:
    functions文件详细分析和说明
    awk知识点总结
    sed修炼系列(四):sed中的疑难杂症
    sed修炼系列(三):sed高级应用之实现窗口滑动技术
    sed修炼系列(一):花拳绣腿之入门篇
    grep命令中文手册(info grep翻译)
    Linux comm命令求出文件的交集、差集
    黄聪:使用七牛上传视频调用视频播放器的推荐方案
    黄聪:主机宝安装wordpress注意事项
    黄聪:C#解析HTML DOM解析类 HtmlParser.Net 下载
  • 原文地址:https://www.cnblogs.com/Robin132929/p/13787405.html
Copyright © 2011-2022 走看看