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

    工厂模式

    设计模式原则:业务和逻辑分离,业务主要表现在主程序中,分离之后,逻辑改变了,业务部分修改的代码要求最小,业务改变了,争取不影响逻辑部分的代码。

    1、作用:实例化对象,同时为了增加可扩展性,用户看到的只是接口和抽象类,接口代表的是产品,抽象类是工厂。

    2、类图:

    3、类图实现

    产品:

    (1)接口

    public interface ICar {
        public void createCar();
    }
    View Code

    (2)三个实现类实现结构 top mid low

    public class LowCar implements ICar {
    
        @Override
        public void createCar() {
            // TODO Auto-generated method stub
            System.out.println("low car");
        }
    
    }
    public class MidCar implements ICar {
    
        @Override
        public void createCar() {
            // TODO Auto-generated method stub
            System.out.println("mid car");
        }
    
    }
    public class TopCar implements ICar {
    
        @Override
        public void createCar() {
            // TODO Auto-generated method stub
            System.out.println("top car");
        }
    
    }
    View Code

    (3)抽象工厂 AbstracFactory

    public abstract class AbstractFactory {
        public abstract ICar create();
    }
    View Code

    (4)三个实现类 继承抽象工厂 top mid low

    public class LowCarFactory extends AbstractFactory {
    
        @Override
        public ICar create() {
            // TODO Auto-generated method stub
            return new LowCar();
        }
    
    }
    public class MidCarFactory extends AbstractFactory {
    
        @Override
        public ICar create() {
            // TODO Auto-generated method stub
            return new MidCar();
        }
    
    }
    public class TopCarFactory extends AbstractFactory {
    
        @Override
        public ICar create() {
            // TODO Auto-generated method stub
            return new TopCar();
        }
    
    }
    View Code

    (5)测试类 分别使用->(实线)只调用接口和抽象类

    public class User {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            AbstractFactory factory = new TopCarFactory();
            ICar car = factory.create();
            car.createCar();
        }
    
    }
    View Code
  • 相关阅读:
    TypeScript 源码详细解读(3)词法2-标记解析
    TypeScript 源码详细解读(2)词法1-字符处理
    TypeScript 源码详细解读(1)总览
    7年编程语言设计精华总结——写给想创造或正在创造一门新编程语言的同学
    我为什么开发新语言
    CLR值类型和引用类型
    运行时内存模型
    IronPython之基本类型
    .NET 应用程序域?
    .NET程序如何启动?
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4370208.html
Copyright © 2011-2022 走看看