码迷,mamicode.com
首页 > 其他好文 > 详细

23种设计模式

时间:2018-11-09 22:55:51      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:耦合性   建议   细节   节点   col   set   img   计算器   prot   

*********简单工厂模式*******

我们设计或者写出来的代码,要容易维护、容易扩展、并且容易复用

值需要改正要改的地方,这叫做可维护

以后出现类似的情况还可以用这一段代码,就叫做可复用

如若要添加其他东西,添加就好了,这叫做可扩展

要是能够随便移动项目中代码的位置,这叫做灵活性好

比如说写一个计算器的代码,就最好将业务层和界面进行分离,

技术分享图片

**************策略模式*******************

案例:商场收银软件

对于算法经常变动的项目一般情况下建议使用。

 

*************单一职责原则***********************

就一个类而言,应该仅有一个引起他变化的原因。

*************开放封闭原则*********************

通俗的话讲,就是做两手准备

软件实体应该可以扩展,但是不能够进行修改。

***********************装饰模式 *********************

*******************代理模式***********************

 

迭代器设计模式:

创建容器

package com.bjsxt.dp.iterator;

public class ArrayList {
    // 创建一个对象的的数组,这样就能够放入任意类型的对象了
    Object[] objects = new Object[10];
    int index = 0;

    public void add(Object o) {
        //这样只要在自己内存允许的情况下,就可以 无限制的添加了
        if(index==objects.length){
            Object[] newObjects=new Object[objects.length*2];
            //将原来的数组存放到新数组中
            System.arraycopy(objects, 0, newObjects, 0, objects.length);
           //将原来数组的引用指向新的数组
            objects=newObjects;
            
        }
        objects[index] = o;// 表示新加进来的对象
        index++;

    }
    //看看最后装了 多少个
    public int size(){
        return index;
    }
}

package com.bjsxt.dp.iterator;

public class Cat {
    private int id;

    public Cat() {
        super();
    }

    public Cat(int id) {
        super();
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Cat [id=" + id + "]";
    }

}
package com.bjsxt.dp.iterator;

//使用链表方式的容器
public class LinkedList {
    Node head = null;
    Node tail = null;
    int size = 0;

    public void add(Object o) {
        Node n = new Node(o, null);
        if (head == null) {
            head = n;
            tail=n;
        }
        tail.setNext(n);
        tail=n;
        size++;
    }

    public int size() {
        return size;
    }
}
package com.bjsxt.dp.iterator;

//节点类
public class Node {
    private Object data;// 数据本身
    private Node next;// 那只拉住下一个节点的小手

    public Node() {
        super();
    }

    public Node(Object data, Node next) {
        super();
        this.data = data;
        this.next = next;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }

}
package com.bjsxt.dp.iterator;

//注意这里我们引用自己定义的Arraylist类,而不是使用jdk自带的arraylist类
//这个容器比数组好用
import org.junit.Test;

import com.bjsxt.dp.iterator.ArrayList;;

public class TestMethod {
    @Test
    public void test01() {
        ArrayList al = new ArrayList();
        for (int i = 0; i < 15; i++) {
            al.add(new Cat(i));
        }
        System.out.println(al.size());
    }
    @Test
    public void test02() {
        LinkedList al = new LinkedList();
        for (int i = 0; i < 15; i++) {
            al.add(new Cat(i));
        }
        System.out.println(al.size());
    }

}

变量私有的叫做字段,公有的叫做属性

使用protected修饰的成员对子类公开,对其他的类是不公开的

继承是有缺点的,父类变动,子类也得跟着做出相应的变动

同时,继承会破环包装,父类的实现细节暴漏给子类,这其实大大增加 两者之间的耦合性。

一个类是另外一个  类的特殊类

抽象方法没有方法体,抽象类中是可以有普通方法的

 

23种设计模式

标签:耦合性   建议   细节   节点   col   set   img   计算器   prot   

原文地址:https://www.cnblogs.com/dongyaotou/p/9937387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!