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也需要增加从而导致类的数量徒增这是抽象工厂模式的一个弊端

  • 相关阅读:
    高斯消元算法
    Fermat小定理的证明
    Pollard Rho 算法简介
    做一些无聊的题
    永远不要相信自己的傲慢
    笔记-数据结构进阶
    笔记-区间问题
    线段树板子
    [DarkBZOJ3694] 最短路
    [CF321D] Ciel and Flipboard
  • 原文地址:https://www.cnblogs.com/Robin132929/p/13787405.html
Copyright © 2011-2022 走看看