zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式 Factory实现

    simpleFactory

    //car接口
    public interface Car {
        void run();
    }
    
    //两个实现类
    public class Audi implements Car{
    
        public void run() {
            System.out.println("奥迪在跑");
        }
        
    }
    
    public class Byd implements Car{
    
        public void run() {
            System.out.println("Byd在跑");
        }
        
    }
    Car接口以及两个实现类
    //第一种实现
    public class CarFactory {
        public static Car createCar(String type){
            if("奥迪".equals(type)){
                return new Audi();
            }else if("比亚迪".equals(type)){
                return new Byd();
            }else{
                return null;
            }
        }
    }
    
    //第二种实现
    public class CarFactory2 {
        public static Car createAudi(){
            return new Audi();
        }
        
        public static Car createByd(){
            return new Byd();
        }    
    }
    工厂类实现
    /**
     * 普通模式,无工厂模式
     * @author benny
     *
     */
    
    public class Client01 {
        public static void main(String[] args) {
            Car c1 = new Audi();
            Car c2 = new Byd();
            
            c1.run();
            c2.run();
        }
    }
    
    
    /**
     * 简单工厂模式
     * @author benny
     *
     */
    
    public class Client02 {
        public static void main(String[] args) {
            Car c1 = CarFactory.createCar("奥迪");
            Car c2 = CarFactory.createCar("比亚迪");
            
            c1.run();
            c2.run();
        }
    }
    调用

     factoryMethod

    public interface Car {
        void run();
    }
    
    public class Audi implements Car{
    
        public void run() {
            System.out.println("奥迪在跑");
        }
        
    }
    
    public class Benz implements Car{
    
        public void run() {
            System.out.println("奔驰在跑");
        }
        
    }
    
    public class Byd implements Car{
    
        public void run() {
            System.out.println("Byd在跑");
        }
        
    }
    car接口及其实现
    public interface CarFactory {
        Car createCar();
    }
    
    public class AudiFactory implements CarFactory {
    
        @Override
        public Car createCar() {
            return new Audi();
    
        }
    
    }
    
    public class BenzFactory implements CarFactory {
    
        @Override
        public Car createCar() {
            return new Benz();
    
        }
    
    }
    
    public class BydFactory implements CarFactory {
    
        @Override
        public Car createCar() {
            return new Byd();
    
        }
    
    }
    工厂接口及其实现
    /**
     * 最大的好处实现了开闭原则
     * @author benny
     *
     */
    public class Client {
        public static void main(String[] args) {
            Car c1 = new AudiFactory().createCar();
            Car c2 = new BydFactory().createCar();
            Car c3 = new BenzFactory().createCar();
            
            c1.run();
            c2.run();
            c3.run();
        }
    }
    调用

    abstractFactory

    public interface Engine {
        void run();
        void start();
    }
    
    class LuxuryEngine implements Engine{
    
        @Override
        public void run() {
            System.out.println("转得快");
            
        }
    
        @Override
        public void start() {
            System.out.println("启动快,可以自动启停");
            
        }
        
    }
    
    
    class LowEngine implements Engine{
    
        @Override
        public void run() {
            System.out.println("转得慢");
            
        }
    
        @Override
        public void start() {
            System.out.println("启动慢,不可以自动启停");
            
        }
        
    }
    引擎接口及其实现
    public interface Tyre {
        void revolve();
    }
    
    class LuxuryTyre implements Tyre{
    
        @Override
        public void revolve() {
            System.out.println("旋转不磨损");
            
        }
        
    }
    
    class LowTyre implements Tyre{
    
        @Override
        public void revolve() {
            System.out.println("磨损快");
            
        }
        
    }
    轮胎接口及其实现
    public interface Seat {
        void massage();
    }
    
    class LuxurySeat implements Seat{
    
        @Override
        public void massage() {
            System.out.println("可以按摩");
            
        }
        
    }
    
    class LowSeat implements Seat{
    
        @Override
        public void massage() {
            System.out.println("不能按摩");
            
        }
        
    }
    座椅接口及其实现
    public interface CarFactory {
        Engine createEngine();
        Seat createSeat();
        Tyre createTyre();
    }
    
    public class LowCarFactory implements CarFactory{
    
        @Override
        public Engine createEngine() {
            return  new LowEngine();
            
        }
    
        @Override
        public Seat createSeat() {
            return new LowSeat();
        }
    
        @Override
        public Tyre createTyre() {
            return new LowTyre();
        }
    
    }
    
    
    public class LuxuryCarFactory implements CarFactory{
    
        @Override
        public Engine createEngine() {
            return  new LuxuryEngine();
            
        }
    
        @Override
        public Seat createSeat() {
            return new LuxurySeat();
        }
    
        @Override
        public Tyre createTyre() {
            return new LuxuryTyre();
        }
    
    }
    工厂接口及其实现
    public class Client {
        public static void main(String[] args) {
            CarFactory factory = new LuxuryCarFactory();
            Engine e =factory.createEngine();
            e.run();
            e.start();
        }
    }
    调用
  • 相关阅读:
    笔记本硬盘接口SATA, PATA
    dB和dBm的区别
    SQL Server 存储过程分页方案比较
    SQL Server 输出参数OUTPUT
    安装iis5.1时找不到zClientm.exe的解决方法
    mac os x 10.5.8不通本网段
    SQL Server 存储过程分页大全(2005,2000)
    硬盘保修查询网站明细清单希捷硬盘保修查询西数硬盘保修查
    如何让SWT的窗口置顶(总在最上面)?
    ASP.NET(三) Web开发——常用服务器控件
  • 原文地址:https://www.cnblogs.com/qingdaofu/p/7466063.html
Copyright © 2011-2022 走看看