美文网首页
创建型设计模式

创建型设计模式

作者: cp_insist | 来源:发表于2018-10-07 17:51 被阅读0次

    一 . 工厂模式

    package DesignPattern;
    
    /**
     * Created by YY on 2018/10/7.
     */
    public class FactoryPattern {
         public static People getPeople(String name){
             if (name.equals("man")) {
                 return new man(name);
             } else if (name.equals("woman")) {
                 return new woman(name);
             } else {
                 return new unknow(name);
             }
         }
    
        public static void main(String[] args) {
            People people = FactoryPattern.getPeople("ma");
            people.run();
        }
    }
    abstract class  People{
        public abstract void run();
    }
    class woman extends People{
        private String name;
        public woman(String name) {
            this.name = name;
        }
        @Override
        public void run() {
            System.out.println(this.name +" 正在跑哇");
        }
    }
    class man extends People{
        private String name;
        public man(String name) {
            this.name = name;
        }
        @Override
        public void run() {
            System.out.println(this.name +" 正在跑哇");
        }
    }
    class unknow extends People{
        private String name;
        public unknow(String name) {
            this.name = name;
        }
        @Override
        public void run() {
            System.out.println("未知性别的"+ this.name +" 正在跑哇");
        }
    }
    
    二. 抽象工厂设计模式
    package DesignPattern;
    
    /**
     * Created by YY on 2018/10/7.
     */
    public class AbstractFactoryPattern {
        public static abstractFactory getFactory(String type){
            if (type.equals("color")) {
                return new colorFactory();
            } else if (type.equals("shape")) {
                return new shapeFactory();
            } else {
                return null;
            }
        }
        public static void main(String[] args) {
            abstractFactory factory = getFactory("shape");
            shape shape = factory.getShape("circle");
            shape.desc();
        }
    }
    abstract class color{
        public abstract void draw();
    }
    class red extends color{
        private String color;
        public red(String color) {
            this.color = color;
        }
        @Override
        public void draw() {
            System.out.println(this.color+"颜色的笔很好看");
        }
    }
    class black extends color{
        private String color;
        public black(String color) {
            this.color = color;
        }
        @Override
        public void draw() {
            System.out.println(this.color+"颜色的笔很好看");
        }
    }
    abstract class shape {
        public abstract void desc();
    }
    class circle extends shape{
        private String circle;
        public circle(String circle) {
            this.circle = circle;
        }
        @Override
        public void desc() {
            System.out.println("我的形状是" + circle);
        }
    }
    
    class square extends shape{
        private String circle;
        public square(String circle) {
            this.circle = circle;
        }
        @Override
        public void desc() {
            System.out.println("我的形状是" + circle);
        }
    }
    abstract class abstractFactory{
        public abstract color getColor(String color);
        public abstract shape getShape(String shape);
    }
    class colorFactory extends abstractFactory{
    
        @Override
        public color getColor(String colorType) {
           if (colorType.equals("red")) {
               return  new red(colorType);
           } else  if (colorType.equals("black")) {
               return new black(colorType);
           } else {
               return null;
           }
        }
    
        @Override
        public shape getShape(String shapeType) {
            return null;
        }
    }
    
    class shapeFactory extends abstractFactory{
    
        @Override
        public color getColor(String colorType) {
          return null;
        }
    
        @Override
        public shape getShape(String shapeType) {
            if (shapeType.equals("circle")) {
                return new circle(shapeType);
            } else if (shapeType.equals("squre")) {
                return new square(shapeType);
            } else {
                return null;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:创建型设计模式

          本文链接:https://www.haomeiwen.com/subject/fxalaftx.html